[613] | 1 | RACPTCSV ;HISC/SWM - CPT Code Set Version ;2/23/04 09:03
|
---|
| 2 | ;;5.0;Radiology/Nuclear Medicine;**38,46**;Mar 16, 1998
|
---|
| 3 | Q
|
---|
| 4 | ACTC() ; find out if CPT CODE is active
|
---|
| 5 | ; called from file 70.03 field 2's DIC("S")
|
---|
| 6 | ; Y = ien file 71
|
---|
| 7 | ; DA(2) = RADFN
|
---|
| 8 | ; DA(1) = RADTI
|
---|
| 9 | N RAACTIV,RA710,RACPT,RACPTNAM,RADT0,RAMSG,RADATE,RADATV
|
---|
| 10 | N RATXT,RAI,RAX ; RATXT is local array of error text
|
---|
| 11 | S RAACTIV=1 ; =1 no error, or CPT CODE is active
|
---|
| 12 | S RAI=0 ; counter
|
---|
| 13 | S RA710=^RAMIS(71,+Y,0)
|
---|
| 14 | S RACPT=$P(RA710,U,9)
|
---|
| 15 | I RACPT="",($P(RA710,U,6)="D")!($P(RA710,U,6)="S") D S RAACTIV=0
|
---|
| 16 | . S RAI=RAI+1
|
---|
| 17 | . S RATXT(RAI)="** A Detailed or Series procedure is missing a CPT CODE.**"
|
---|
| 18 | . Q
|
---|
| 19 | S RADT0=^RADPT(DA(2),"DT",DA(1),0),RADATE=$P(RADT0,U)
|
---|
| 20 | I $P(RA710,U,6)="P" D S RAACTIV=0
|
---|
| 21 | . S RAI=RAI+1
|
---|
| 22 | . S RATXT(RAI)="** Procedure is a parent type. **"
|
---|
| 23 | . Q
|
---|
| 24 | I $D(^RAMIS(71,+Y,"I"))#2,^("I")'="",^("I")'>DT D S RAACTIV=0
|
---|
| 25 | . S RADATV=$$FMTE^XLFDT($P(^RAMIS(71,+Y,"I"),U),2) ; convert inact.dt
|
---|
| 26 | . S RAI=RAI+1
|
---|
| 27 | . S RATXT(RAI)="** Procedure is inactive since "_RADATV_". **"
|
---|
| 28 | . Q
|
---|
| 29 | I $P(RA710,U,12)'=$P(^RADPT(DA(2),"DT",DA(1),0),U,2) D S RAACTIV=0
|
---|
| 30 | . S RAI=RAI+1
|
---|
| 31 | . S RATXT(RAI)="** Procedure's Imaging Type differs from Exam's Imaging Type. **"
|
---|
| 32 | . Q
|
---|
| 33 | S RADATV=$$FMTE^XLFDT(RADATE,2) ; convert Exam Date
|
---|
| 34 | I RACPT,'$$ACTCODE^RACPTMSC(RACPT,RADATE) D S RAACTIV=0
|
---|
| 35 | . S RACPTNAM=$P($$NAMCODE^RACPTMSC(RACPT,RADATE),U)
|
---|
| 36 | . S RAI=RAI+1
|
---|
| 37 | . S RATXT(RAI)="** Procedure's CPT "_RACPTNAM_" is invalid for Exam Date "_RADATV_". **"
|
---|
| 38 | .; if registering exam, and order is parent proc, display help message
|
---|
| 39 | . I $D(RAOPT("REG")),$P($G(^RAMIS(71,+$P($G(^RAO(75.1,+$G(RAORDS(1)),0)),U,2),0)),U,6)="P" D
|
---|
| 40 | .. S RAI=RAI+1
|
---|
| 41 | .. S RATXT(RAI)="** Enter ""^"" to skip this descendent"
|
---|
| 42 | .. S RAI=RAI+1
|
---|
| 43 | .. S RATXT(RAI)=" or enter a procedure with an active CPT code. **"
|
---|
| 44 | .. Q
|
---|
| 45 | . Q
|
---|
| 46 | I RAACTIV Q RAACTIV ; no errors flagged
|
---|
| 47 | I '$D(RATXT) Q RAACTIV ; quit warning if no error text in local array
|
---|
| 48 | ; X is what user typed, or is proc at // if user pressed return key
|
---|
| 49 | I $E(RA710,1,$L(X))'=X Q RAACTIV ; quit warning if X'=prcnam begin chars
|
---|
| 50 | I $P(^RAMIS(71,Y,0),U)'=X Q RAACTIV ; quit warning if lookup prcnam '= X
|
---|
| 51 | ; if registering, quit warning if both met:
|
---|
| 52 | ; if user input matches order's procedure (frm descnd if parnt ordr)
|
---|
| 53 | ; if lookup IEN isn't same as order's proc's ien
|
---|
| 54 | ; note: RAPRC won't exist if procs added aftr descnts entered
|
---|
| 55 | I $D(RAOPT("REG")),X=$G(RAPRC),Y'=$G(RAPROCI) Q RAACTIV
|
---|
| 56 | S RAMSG=$P(RA710,U)
|
---|
| 57 | D EN^DDIOL(RAMSG,,"!")
|
---|
| 58 | S RAI=0
|
---|
| 59 | F S RAI=$O(RATXT(RAI)) Q:'RAI S RAMSG=RATXT(RAI) D EN^DDIOL(RAMSG,,"!?4")
|
---|
| 60 | S RAMSG=""
|
---|
| 61 | D EN^DDIOL(RAMSG,,"!") ; put blank line after listing
|
---|
| 62 | Q RAACTIV
|
---|
| 63 | FUTC() ; called from input templates [RA EXAM EDIT], [RA STATUS CHANGE]
|
---|
| 64 | ; IF exam date is future to first Log Date:
|
---|
| 65 | ; check CPT CODE when/after that date arrives
|
---|
| 66 | ; and last Log Date isn't later than Exam Date
|
---|
| 67 | ; assumes existing RADFN,RADTI,RACNI,RADTE
|
---|
| 68 | ; RETURNS 0=inact.CPT Code, 1=active CPT Code
|
---|
| 69 | N RADTEX,RARET,RALOG1,RALOGL,RA71,RACPTNAM,RAMSG,RAX
|
---|
| 70 | S RARET=1 ; default return to 1 (active)
|
---|
| 71 | S RAX=^RADPT(RADFN,"DT",RADTI,"P",RACNI,0) G:RAX="" FUTCQ
|
---|
| 72 | S RADTEX=RADTE\1 ; date portion of RADTE
|
---|
| 73 | S RALOG1=$O(^RADPT(RADFN,"DT",RADTI,"P",RACNI,"L",0)) G:'RALOG1 FUTCQ
|
---|
| 74 | S RALOG1=+^RADPT(RADFN,"DT",RADTI,"P",RACNI,"L",RALOG1,0)\1 G:'RALOG1 FUTCQ ;dt portion 1st log date
|
---|
| 75 | G:RALOG1'<RADTEX FUTCQ ;1st Log Date same/greater than Exam Date
|
---|
| 76 | G:DT<RADTEX FUTCQ ; future Exam Date hasn't arrived yet
|
---|
| 77 | S RALOGL=$O(^RADPT(RADFN,"DT",RADTI,"P",RACNI,"L",""),-1) G:'RALOGL FUTCQ
|
---|
| 78 | S RALOGL=+^RADPT(RADFN,"DT",RADTI,"P",RACNI,"L",RALOGL,0)\1 ;dt portion last log date
|
---|
| 79 | G:RALOGL'<RADTEX FUTCQ ;latest Log Date = OR > Exam Date
|
---|
| 80 | ; now check CPT CODE from case record
|
---|
| 81 | S RA71=$G(^RAMIS(71,+$P(RAX,U,2),0))
|
---|
| 82 | S RARET=$$ACTCODE^RACPTMSC(+$P(RA71,"^",9),RADTE)
|
---|
| 83 | I 'RARET D
|
---|
| 84 | . S RACPTNAM=$P($$NAMCODE^RACPTMSC(+$P(RA71,"^",9),RADTE),U)
|
---|
| 85 | . S RAMSG="*** Exam was registered with a future date, and since ***"
|
---|
| 86 | . D EN^DDIOL(RAMSG,,"!?4")
|
---|
| 87 | . S RAMSG="*** registration, its CPT Code "_RACPTNAM_" has been inactivated. ***"
|
---|
| 88 | . D EN^DDIOL(RAMSG,,"!?4")
|
---|
| 89 | . S RAMSG="You must choose a procedure that has an active CPT Code."
|
---|
| 90 | . D EN^DDIOL(RAMSG,,"!!?4")
|
---|
| 91 | . D EN^DDIOL(" ",,"!?4")
|
---|
| 92 | . Q
|
---|
| 93 | FUTCQ ;
|
---|
| 94 | Q RARET
|
---|
| 95 | FUTCMOD() ; called from input templates [RA EXAM EDIT], [RA STATUS CHANGE]
|
---|
| 96 | ; IF exam date is future to first Log Date:
|
---|
| 97 | ; check CPT Modifier when/after that date arrives
|
---|
| 98 | ; and last Log Date isn't later than Exam Date
|
---|
| 99 | ; assumes existing RADFN,RADTI,RACNI,RADTE
|
---|
| 100 | ; RETURNS 0=at least one CPT Mod is inactive, 1=all CPT Mods active
|
---|
| 101 | N RADTEX,RARET,RALOG1,RALOGL,RA813,RAMSG,RA0,RA1,RAX,RAMODSTR
|
---|
| 102 | S RARET=1 ;default return value to 1
|
---|
| 103 | G:'$O(^RADPT(RADFN,"DT",RADTI,"P",RACNI,"CMOD",0)) FUTCMODQ ; no cpt mod entered
|
---|
| 104 | S RADTEX=RADTE\1 ; date portion of RADTE
|
---|
| 105 | S RALOG1=$O(^RADPT(RADFN,"DT",RADTI,"P",RACNI,"L",0)) G:'RALOG1 FUTCMODQ
|
---|
| 106 | S RALOG1=+^RADPT(RADFN,"DT",RADTI,"P",RACNI,"L",RALOG1,0)\1 G:'RALOG1 FUTCMODQ ;dt portion 1st log date
|
---|
| 107 | G:RALOG1'<RADTEX FUTCMODQ ; 1st Log date same/greater than Exam Date
|
---|
| 108 | G:DT<RADTEX FUTCMODQ ; future Exam Date hasn't arrived yet
|
---|
| 109 | S RALOGL=$O(^RADPT(RADFN,"DT",RADTI,"P",RACNI,"L",""),-1) G:'RALOGL FUTCMODQ
|
---|
| 110 | S RALOGL=+^RADPT(RADFN,"DT",RADTI,"P",RACNI,"L",RALOGL,0)\1 G:'RALOGL FUTCMODQ ;dt portion last log date
|
---|
| 111 | G:RALOGL'<RADTEX FUTCMODQ ;latest Log Date = OR > Exam Date
|
---|
| 112 | ; now check all CPT Mods from case record
|
---|
| 113 | S RA1=0 F S RA1=$O(^RADPT(RADFN,"DT",RADTI,"P",RACNI,"CMOD",RA1)) Q:'RA1 D
|
---|
| 114 | . S RAX=+^RADPT(RADFN,"DT",RADTI,"P",RACNI,"CMOD",RA1,0)
|
---|
| 115 | . S RA0=$$ACTMOD^RACPTMSC(RAX,RADTE)
|
---|
| 116 | . I 'RA0 S RARET=0 D
|
---|
| 117 | .. S RAMSG="Exam was registered with a future date, and since registration,"
|
---|
| 118 | .. D EN^DDIOL(RAMSG,,"!?4")
|
---|
| 119 | .. S RAMSG=$P(RAMODSTR,"^",2)_" "_$P(RAMODSTR,"^",3)_" has been inactivated."
|
---|
| 120 | .. D EN^DDIOL(RAMSG,,"!?4")
|
---|
| 121 | .. Q
|
---|
| 122 | . Q
|
---|
| 123 | I 'RARET D EN^DDIOL("You must delete the inactive CPT Modifier(s) before you can continue.",,"!?4")
|
---|
| 124 | FUTCMODQ ;
|
---|
| 125 | Q RARET
|
---|
| 126 | ;
|
---|