source: FOIAVistA/trunk/r/RADIOLOGY_NUCLEAR_MEDICINE-RA/RAMAIN2.m@ 1378

Last change on this file since 1378 was 628, checked in by George Lilly, 15 years ago

initial load of FOIAVistA 6/30/08 version

File size: 8.2 KB
Line 
1RAMAIN2 ;HISC/GJC-Radiology Utility File Maintenance (Part Two) ;8/15/05 10:07am
2 ;;5.0;Radiology/Nuclear Medicine;**45,62,71**;Mar 16, 1998;Build 10
3 ; 08/12/2005 bay/kam Remedy Call 104630 Patch 62
4 ; 03/02/2006 BAY/KAM Remedy Call 131482 Patch RA*5*71
52 ;;Procedure Enter/Edit
6 ; *** This subroutine once resided in RAMAIN i.e, '2^RAMAIN'. ***
7 ; RA PROCEDURE option
8 N RACTIVE,RAENALL,RAY,RAFILE,RASTAT,RAXIT
9 S (RAENALL,RANEW71,RAXIT)=0
10 N RADIO,RAPTY,RAASK,RAROUTE ;used by the edit template
11 F D Q:$G(RAXIT)
12 . K DA,DD,DIC,DINUM,DLAYGO,DO,RACMDIFF,RATRKCMA,RATRKCMB
13 . S DIC="^RAMIS(71,",DIC(0)="QEAMLZ",DLAYGO=71,DIC("DR")=6
14 . W ! D ^DIC K D,DD,DIC,DINUM,DLAYGO,DO
15 . S:+Y<0 RAXIT=1 I $G(RAXIT) K D,X,Y Q
16 . S (DA,RADA)=+Y,RAY=Y,RAFILE=71
17 . ;RA*5*71 changed next line for Remedy Call 131482
18 . S RANEW71=$S($P(Y,U,3)=1:1,1:0) ;used in template, edit CPT Code if new rec.
19 . L +^RAMIS(RAFILE,RADA):5
20 . I '$T D Q
21 .. W !?5,"This record is currently being edited by another user."
22 .. W !?5,"Try again later!",$C(7) S RAXIT=1
23 .. Q
24 . S RAPNM=$P($G(Y(0)),U) ;proc. name for display purposes in template
25 . S RACTIVE=$P($G(^RAMIS(71,RADA,"I")),"^")
26 . S RASTAT=$S(RACTIVE="":1,RACTIVE>DT:1,1:0)
27 . D TRKCMB^RAMAINU(DA,.RATRKCMB) ;tracks existing
28 . ; CM definition before editing. RATRKCMB ids the before CM values
29 . S DIE="^RAMIS(71,",DR="[RA PROCEDURE EDIT]" D ^DIE
30 . K RAPNM S RAPROC(0)=$G(^RAMIS(71,RADA,0))
31 . ;
32 . ;check for data consistency between the 'CONTRAST MEDIA USED' &
33 . ;'CONTRAST MEDIA' fields.
34 . D CMINTEG^RAMAINU1(RADA,RAPROC(0))
35 . ;
36 . D TRKCMA^RAMAINU(RADA,RATRKCMB,.RATRKCMA,.RACMDIFF)
37 . I $O(^RAMIS(71,RADA,"NUC",0)),($P(RAPROC(0),"^",2)=1) D DELRADE(RADA)
38 . S RACTIVE=$P($G(^RAMIS(71,RADA,"I")),"^")
39 . S RASTAT=RASTAT_"^"_$S(RACTIVE="":1,RACTIVE>DT:1,1:0)
40 . ; 08/12/2005 104630 KAM - added '$G(RANEW71) to next line
41 . I RAPROC(0)]"",("^B^P^"'[(U_$P(RAPROC(0),"^",6)_U)),('+$P(RAPROC(0),"^",9)),'+$G(RANEW71) D
42 .. K %,C,D0,DE,DI,DIE,DQ,DR
43 .. W !?5,$C(7),"...no CPT code entered..."
44 .. W !?5,"...will change type to a 'broad' procedure.",!
45 .. S DA=RADA,DIE="^RAMIS(71,",DR="6///B" D ^DIE
46 .. Q
47 . ;08/12/2005 104630 - KAM added next 5 lines
48 . I RAPROC(0)]"",("^B^P^"'[(U_$P(RAPROC(0),"^",6)_U)),('+$P(RAPROC(0),"^",9)),+$G(RANEW71) D
49 .. K %,C,D0,DE,DI,DIK,DQ,DR
50 .. W !?5,$C(7),"...no CPT code entered..."
51 .. W !?5,"...will delete the record at this time.",!
52 .. S DIK="^RAMIS(71,",DA=RADA D ^DIK K DIK
53 . ;if an active parent w/o descendants, inactivate the parent
54 . I $P(RASTAT,U,2),($P(RAPROC(0),U,6)="P"),('$O(^RAMIS(71,RADA,4,0))) D
55 .. K D,D0,D1,DA,DI,DIC,DIE,DQ,DR
56 .. W !!?5,"Inactivating this parent procedure - no descendents.",!,$C(7)
57 .. S DA=RADA,DIE="^RAMIS(71,",DR="100///"_$S($D(DT):DT,1:$$DT^XLFDT())
58 .. D ^DIE K D,D0,D1,DA,DI,DIC,DIE,DQ,DR S $P(RASTAT,U,2)=0 ;inactive
59 .. Q
60 . I $P($G(^RA(79.2,+$P(RAPROC(0),U,12),0)),U,5)="Y",(+$O(^RAMIS(71,RADA,"NUC",0))) D VRDIO(RADA)
61 . I "^B^P^"[(U_$P(RAPROC(0),U,6)_U),($P(RAPROC(0),U,9)]"") D
62 .. K %,D,D0,DA,DE,DIC,DIE,DQ,DR
63 .. S DA=RADA,DIE="^RAMIS(71,",DR="9///@" D ^DIE
64 .. W !!?5,"...CPT code deleted because "_$S($P(RAPROC(0),U,6)="B":"Broad",1:"Parent")_" procedures",!?5,"should not have CPT codes.",!,$C(7)
65 .. Q
66 . K %,%X,%Y,C,D,D0,D1,DA,DE,DI,DIE,DQ,DR,RAIMAG,RAMIS,RAPROC,X,Y
67 .;send Orderable Item HL7 msg to CPRS if the ORDER DIALOG (#101.41)
68 .;file exists unconditionally
69 .D:$$ORQUIK^RAORDU()=1 PROC^RAO7MFN(RAENALL,RAFILE,RASTAT,RAY)
70 .;
71 . L -^RAMIS(RAFILE,RADA) K RADA
72 .;unconditionally update the parent procedure if the descendent
73 .I $O(^RAMIS(71,"ADESC",+RAY,0)) D UPDATP^RAO7UTL(RAY)
74 .;has been edited
75 . Q
76 K DIR,RACMDIFF,RATRKCMA,RATRKCMB
77 S DIR(0)="YA",DIR("B")="NO"
78 S DIR("A")="Want to run a validity check on CPT and stop codes? "
79 S DIR("?",1)="Answer 'YES' to print a list of Radiology/Nuclear Medicine Procedures"
80 S DIR("?",2)="with missing or invalid CPT's and/or Credit Clinic Stop Code(s)."
81 S DIR("?",3)="Broad procedures with invalid codes are included for information"
82 S DIR("?",4)="only. Inactive procedures are not required to have valid codes."
83 S DIR("?",5)="To be valid, Stop Codes must be in the Imaging Stop Codes file 71.5;"
84 S DIR("?",6)="CPT's must be nationally active."
85 S DIR("?")="Please answer 'YES' or 'NO'."
86 W ! D ^DIR K DIR G:$D(DIRUT) EXIT
87 D:Y ^RAPERR
88EXIT K RADA,RANEW71,X,Y
89 Q
9013 ;;Rad/Nuc Med Common Procedure File Enter/Edit
91 ; RA COMMON PROCEDURE option
92 N RADA,RAENALL,RAY,RAFILE,RALOW,RAMIS713,RASTAT,RAIMGTYI S RAENALL=0
93 W ! D EN1^RAUTL17 G:Y'>0 Q13 S RAIMGTYI=Y
94131 S DIC="^RAMIS(71.3,",DIC(0)="AELMQZ",DLAYGO=71.3
95 S DIC("S")="N RA S RA=+$P(^(0),U) I RAIMGTYI=$P($G(^RAMIS(71,RA,0)),U,12)"
96 S DIC("W")="N RA4 S RA4=$P($G(^(0)),""^"",4) W:RA4]"""" "" (""_RA4_"")"" W:RA4']"""" "" (no sequence number)"""
97 W ! D ^DIC K DIC,DLAYGO,D,X
98 I Y<0 D Q13 G RESEQ
99 ; If a sequence # exists, the Common Proc. is active
100 S RADA=+Y,RAY=Y,RAFILE=71.3 L +^RAMIS(RAFILE,RADA):5
101 I '$T D G Q13
102 . W !?5,"This record is currently being edited by another user."
103 . W !?5,"Try again later!",$C(7)
104 . Q
105 S RASTAT=$S($P(Y(0),"^",4)]"":1,1:0)_"^"
106 I '+$P(RASTAT,"^") S RALOW=$$LOW(RAIMGTYI)
107 S DA=RADA,DIE="^RAMIS(71.3,",DR="[RA COMMON PROCEDURE EDIT]" D ^DIE
108 S RAMIS713(0)=$G(^RAMIS(71.3,RADA,0))
109 ; If the procedure is different than the one originally selected and
110 ; the CPRS Order Dialog file exists, send the Orderable Item Update
111 ; message to CPRS.
112 I $P(RAMIS713(0),"^")'=$P(RAY,"^",2),($$ORQUIK^RAORDU()=1) D
113 . S RASTAT=RASTAT_0 D PROC^RAO7MFN(RAENALL,RAFILE,RASTAT,RAY)
114 . S RAY=RADA_"^"_$P($G(^RAMIS(71.3,RADA,0)),"^")_"^"_1,RASTAT=0_"^"
115 . Q
116 K %,%X,%Y,C,D,D0,DA,DE,DI,DIE,DQ,DR,X,Y
117 S RASTAT=RASTAT_$S($P($G(^RAMIS(71.3,+RAY,0)),"^",4)]"":1,1:0)
118 ; If before & after statuses differ, and the CPRS Order Dialog file
119 ; exists, send the Orderable Item Update message to CPRS.
120 I $$ORQUIK^RAORDU()=1,(($P(RASTAT,"^")+$P(RASTAT,"^",2))=1) D
121 . D PROC^RAO7MFN(RAENALL,RAFILE,RASTAT,RAY)
122 . Q
123 L -^RAMIS(RAFILE,RADA)
124 G 131
125Q13 K DDC,DDH,DISYS,I,POP,RA713
126 Q
127RESEQ ;Resequence the common procedure list
128 N D,D0,DI,DQ,H,I,J,CNT,DIC,DIE,DR,DA,TXT,X
129 I $D(XPDNM) D ; if called during package install
130 . S TXT(1)=" "
131 . S TXT(2)="Resequencing the Rad/Nuc Med Common Procedure List."
132 . Q
133 E W !!?5,"Resequencing the Rad/Nuc Med Common Procedure List"
134 S DIE="^RAMIS(71.3,",(I,CNT)=0
135 F S I=$O(^RAMIS(71.3,"AA",RAIMGTYI,I)) Q:I'>0 D
136 . S J=0
137 . F S J=$O(^RAMIS(71.3,"AA",RAIMGTYI,I,J)) Q:J'>0 I $D(^RAMIS(71.3,J,0)) D
138 .. S DA=J,CNT=CNT+1 N I,J
139 .. S DR="3////^S X=CNT" D ^DIE W:'$D(XPDNM) "."
140 .. Q
141 . Q
142 I $D(XPDNM) D ; if called during package install
143 . S TXT(2)=$G(TXT(2))_" Done!"
144 . D MES^XPDUTL(.TXT)
145 . Q
146 E W " Done!"
147 Q
148LOW(X) ; Find the lowest available sequence number for a procedure within
149 ; a specific Imaging Type. Seq. #'s range from 1 to 40. If the
150 ; range changes in the DD i.e, ^DD(71.3,3, this code as well as the
151 ; code if EN3^RAUTL18 must also be altered.
152 ; If RAHIT is passed back as "", there is no available sequence number.
153 N RA,RAHIT S RAHIT=""
154 F RA=1:1:40 D Q:RAHIT
155 . Q:$D(^RAMIS(71.3,"AA",X,RA))
156 . S:RAHIT="" RAHIT=RA
157 . Q
158 Q RAHIT
159VRDIO(RADA) ; Validate the 'Usual Dose' field within the 'Default Radiopha-
160 ; rmaceuticals' multiple. 'Usual Dose' must fall within the 'Low Adult
161 ; Dose' & 'High Adult Dose' range. This subroutine will display the
162 ; Radiopharmaceutical in question along with the values in question if
163 ; inconsistencies are found.
164 ;
165 ; Input Variable: 'RADA' the ien of the Procedure
166 N RANUC S RADA(1)=RADA,RADA=0 D EN^DDIOL("","","!")
167 F S RADA=$O(^RAMIS(71,RADA(1),"NUC",RADA)) Q:RADA'>0 D
168 . S RANUC(0)=$G(^RAMIS(71,RADA(1),"NUC",RADA,0))
169 . Q:$P(RANUC(0),"^",2)="" ; no need to validate, nothing input
170 . I '$$USUAL^RADD2(.RADA,$P(RANUC(0),"^",2)) D
171 .. N RARRY S RARRY(1)="For Radiopharmaceutical: "
172 .. S RARRY(1)=RARRY(1)_$$GET1^DIQ(50,+$P(RANUC(0),"^")_",",.01)_$C(7)
173 .. S RARRY(2)="" D EN^DDIOL(.RARRY,"")
174 .. Q
175 . Q
176 Q
177DELRADE(RADA) ; Delete the Default Radiopharmaceuticals multiple
178 N RADA1 S RADA1=0
179 W !!?3,"Deleting default radiopharmaceuticals for this procedure...",!
180 F S RADA1=$O(^RAMIS(71,RADA,"NUC",RADA1)) Q:RADA1'>0 D
181 . K %,%X,%Y,D,D0,DA,DI,DIC,DIE,DQ,DR,X,Y
182 . S DA(1)=RADA,DA=RADA1,DIE="^RAMIS(71,"_RADA_",""NUC"","
183 . S DR=".01///@" D ^DIE
184 . Q
185 K %,%X,%Y,D,D0,DA,DI,DIC,DIE,DQ,DR,X,Y
186 Q
187 ;
Note: See TracBrowser for help on using the repository browser.