| 1 | RAO7MFN ;HISC/GJC-Create MFN orderable item update msg ;6/11/97  08:47
 | 
|---|
| 2 |  ;;5.0;Radiology/Nuclear Medicine;**1,6,10,18,45**;Mar 16, 1998
 | 
|---|
| 3 |  ;Last midification by SS for P18 JUN 19, 2000
 | 
|---|
| 4 |  ;Last modification: 12.16.03 patch 45 Contrast Media by CPT gjc
 | 
|---|
| 5 | PROC(RAENALL,RAFILE,RASTAT,RAY) ; Entry point to update a single procedure.
 | 
|---|
| 6 |  ; 'RAY'    <> is the same as 'Y' when passed back from DIC after
 | 
|---|
| 7 |  ;             lookup on file 71 & file 71.3
 | 
|---|
| 8 |  ; 'RAENALL'<> single procedure (0) or whole file update (1) flag
 | 
|---|
| 9 |  ; 'RAFILE' <> file # of the file being edited (71 or 71.3)
 | 
|---|
| 10 |  ; 'RASTAT' <> Procedure file (71) status: 0 inactive^1 active
 | 
|---|
| 11 |  ;             Com. Proc. file (71.3) Seq. # status: 0 inactive^1 active
 | 
|---|
| 12 |  ;             1st piece: status before edit, 2nd piece: status after
 | 
|---|
| 13 |  ;                        edit.
 | 
|---|
| 14 |  ; This entry point can be called from 2^RAMAIN2 or 13^RAMAIN2
 | 
|---|
| 15 |  ; This routine assumes that RAVAR is defined as an array or global
 | 
|---|
| 16 |  ;  root in which to place the output.
 | 
|---|
| 17 |  ;
 | 
|---|
| 18 |  Q:'$D(RAY)!('$D(RAFILE))!('$D(RASTAT))!('$D(RAENALL))
 | 
|---|
| 19 |  S RAFNUM=71,RAFNAME=$P($G(^DIC(RAFNUM,0)),"^"),RAXIT=0
 | 
|---|
| 20 |  S:'$D(RATSTMP) RATSTMP=$$NOW^XLFDT()
 | 
|---|
| 21 |  S:'$D(RACNT) RACNT=0 S:'$D(RAINCR) RAINCR="S RACNT=RACNT+1"
 | 
|---|
| 22 |  S:'$D(RASUB) RASUB="""RAO7"""
 | 
|---|
| 23 |  D:'$D(RAHLFS)!('$D(RAECH)) EN1^RAO7UTL
 | 
|---|
| 24 |  I 'RAENALL,('$D(RAVAR)) D
 | 
|---|
| 25 |  . S RAVAR="^TMP("_RASUB_","_RATSTMP_","
 | 
|---|
| 26 |  . S RAVARBLE="^TMP("_RASUB_","_RATSTMP_")"
 | 
|---|
| 27 |  . Q
 | 
|---|
| 28 |  I RAFILE=71 D
 | 
|---|
| 29 |  . S RA71(0)=$G(^RAMIS(RAFILE,+RAY,0))
 | 
|---|
| 30 |  . S RA71("I")=$G(^RAMIS(RAFILE,+RAY,"I"))
 | 
|---|
| 31 |  . I $D(^RAMIS(71.3,"B",+RAY)) D
 | 
|---|
| 32 |  .. S RA713(0)=$G(^RAMIS(71.3,+$O(^RAMIS(71.3,"B",+RAY,0)),0))
 | 
|---|
| 33 |  .. Q
 | 
|---|
| 34 |  . Q
 | 
|---|
| 35 |  I RAFILE=71.3 D
 | 
|---|
| 36 |  . S RA713(0)=$G(^RAMIS(RAFILE,+RAY,0))
 | 
|---|
| 37 |  . ; if RA713(0)="" then the common procedure was deleted
 | 
|---|
| 38 |  . S RASVIEN=$S(+RA713(0)>0:+RA713(0),1:+$P(RAY,"^",2))
 | 
|---|
| 39 |  . S RA71(0)=$G(^RAMIS(71,RASVIEN,0))
 | 
|---|
| 40 |  . S RA71("I")=$G(^RAMIS(71,RASVIEN,"I"))
 | 
|---|
| 41 |  . K RASVIEN
 | 
|---|
| 42 |  . Q
 | 
|---|
| 43 |  Q:$$PROCNDE^RAO7UTL(.RA71)  ; Does the Proc. have Proc-Types & I-Types
 | 
|---|
| 44 |  I RAFILE=71 D
 | 
|---|
| 45 |  .I +$P(RAY,"^",3) D
 | 
|---|
| 46 |  ..;new entry, add to master file whether active or inactive
 | 
|---|
| 47 |  ..S RAMFE="MAD"
 | 
|---|
| 48 |  ..Q
 | 
|---|
| 49 |  .I '+$P(RAY,"^",3),(+$P(RASTAT,"^",2)) D
 | 
|---|
| 50 |  ..;now active regardless of prior status, update master file
 | 
|---|
| 51 |  ..S RAMFE="MUP"
 | 
|---|
| 52 |  ..Q
 | 
|---|
| 53 |  .I '+$P(RAY,"^",3),('+$P(RASTAT,"^",2)) D
 | 
|---|
| 54 |  ..;now inactive regardless of prior status, deactivate master file
 | 
|---|
| 55 |  ..S RAMFE="MDC"
 | 
|---|
| 56 |  ..Q
 | 
|---|
| 57 |  .Q
 | 
|---|
| 58 |  ; If RAMFE is still not defined, must be an addition to common orders
 | 
|---|
| 59 |  ; 'Update' to OE since procedure is already in their master file
 | 
|---|
| 60 |  I RAFILE=71.3 S RAMFE="MUP"
 | 
|---|
| 61 |  ;
 | 
|---|
| 62 |  ; If parent with no descendents, send deactivate msg even if active
 | 
|---|
| 63 |  I $P($G(RA71(0)),"^",6)="P",'$O(^RAMIS(71,$S(RAFILE=71.3:+$P(RAY,"^",2),1:+RAY),4,0)) S RAMFE="MDC"
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 |  S RACPT(0)=$$NAMCODE^RACPTMSC(+$P(RA71(0),"^",9),DT)
 | 
|---|
| 66 |  S:RAFILE=71 RAIEN71=+RAY S:RAFILE=71.3 RAIEN71=+$P(RAY,"^",2)
 | 
|---|
| 67 |  S RAXT71=$P(RA71(0),"^")
 | 
|---|
| 68 |  S RAIMGAB=$P($G(^RA(79.2,+$P(RA71(0),"^",12),0)),"^",3)
 | 
|---|
| 69 |  S RAPHYAP=$S($P(RA71(0),"^",11)="":"","Yy"[$P(RA71(0),"^",11):"Y",1:"N")
 | 
|---|
| 70 |  S RACOST=$P(RA71(0),"^",10),RAPRCTY=$P(RA71(0),"^",6)
 | 
|---|
| 71 |  S RACMNOR=$S($P($G(RA713(0)),"^",4)]"":"Y",1:"N") ;can't be an active common w/o a seq #
 | 
|---|
| 72 |  ;determine CM associations for active & inactive procedures
 | 
|---|
| 73 |  S RACMCODE=$$CMEDIA^RAO7UTL(RAIEN71,$P(RA71(0),U,6)) ;ien, proc. type
 | 
|---|
| 74 |  S RAINACT=$S(RA71("I")]"":$$HLDATE^HLFNC(RA71("I"),"DT"),1:"")
 | 
|---|
| 75 |  I 'RAENALL D
 | 
|---|
| 76 |  . X RAINCR
 | 
|---|
| 77 |  . S @(RAVAR_RACNT_")")=$$MSH^RAO7UTL("MFN^M01") X RAINCR ;P18 event type
 | 
|---|
| 78 |  . D MFI^RAO7UTL("UPD") ;P18
 | 
|---|
| 79 |  . Q
 | 
|---|
| 80 |  S @(RAVAR_RACNT_")")="MFE"_RAHLFS_RAMFE_RAHLFS_RAHLFS_RAINACT_RAHLFS
 | 
|---|
| 81 |  S @(RAVAR_RACNT_")")=@(RAVAR_RACNT_")")_$P(RACPT(0),"^")
 | 
|---|
| 82 |  S @(RAVAR_RACNT_")")=@(RAVAR_RACNT_")")_RAECH(1)
 | 
|---|
| 83 |  S @(RAVAR_RACNT_")")=@(RAVAR_RACNT_")")_$P(RACPT(0),"^",2)
 | 
|---|
| 84 |  S @(RAVAR_RACNT_")")=@(RAVAR_RACNT_")")_RAECH(1)_"CPT4"
 | 
|---|
| 85 |  S @(RAVAR_RACNT_")")=@(RAVAR_RACNT_")")_RAECH(1)_RAIEN71
 | 
|---|
| 86 |  S @(RAVAR_RACNT_")")=@(RAVAR_RACNT_")")_RAECH(1)_RAXT71
 | 
|---|
| 87 |  S @(RAVAR_RACNT_")")=@(RAVAR_RACNT_")")_RAECH(1)_"99RAP"
 | 
|---|
| 88 |  K RAINACT X RAINCR
 | 
|---|
| 89 |  S @(RAVAR_RACNT_")")="ZRA"_RAHLFS_RAIMGAB_RAHLFS_RAPHYAP
 | 
|---|
| 90 |  S @(RAVAR_RACNT_")")=@(RAVAR_RACNT_")")_RAHLFS_RACOST_RAHLFS
 | 
|---|
| 91 |  S @(RAVAR_RACNT_")")=@(RAVAR_RACNT_")")_$G(RACMCODE)_RAHLFS
 | 
|---|
| 92 |  S @(RAVAR_RACNT_")")=@(RAVAR_RACNT_")")_RACMNOR_RAHLFS
 | 
|---|
| 93 |  S @(RAVAR_RACNT_")")=@(RAVAR_RACNT_")")_RAPRCTY_RAHLFS
 | 
|---|
| 94 |  ; Check the synonym (1), message (3) and the Education Description
 | 
|---|
| 95 |  ; "EDU" multiples for data
 | 
|---|
| 96 |  N I,J,K,RAPMSG S RAPMSG=0
 | 
|---|
| 97 |  F RAMULT="^RAMIS(71,"_RAIEN71_",1,","^RAMIS(71,"_RAIEN71_",3,","^RAMIS(71,"_RAIEN71_",""EDU""," D
 | 
|---|
| 98 |  . I RAMULT=("^RAMIS(71,"_RAIEN71_",""EDU"","),($$UP^XLFSTR($P(RA71(0),"^",17))'="Y") Q  ; display Ed Descr not set to yes, quit
 | 
|---|
| 99 |  . Q:'+$O(@(RAMULT_"0)"))  ; no data for 1 synonym, 3 message, "EDU" desc multiple
 | 
|---|
| 100 |  . S (I,J)=0,K=""
 | 
|---|
| 101 |  . F  S J=$O(@(RAMULT_J_")")) Q:J'>0  D
 | 
|---|
| 102 |  .. S K=$G(@(RAMULT_J_",0)"))
 | 
|---|
| 103 |  .. I RAMULT=("^RAMIS(71,"_RAIEN71_",1,") D  Q
 | 
|---|
| 104 |  ... X RAINCR S I=I+1
 | 
|---|
| 105 |  ... S @(RAVAR_RACNT_")")="ZSY"_RAHLFS_I_RAHLFS_$P(K,"^")
 | 
|---|
| 106 |  ... Q
 | 
|---|
| 107 |  .. I RAMULT=("^RAMIS(71,"_RAIEN71_",3,") D
 | 
|---|
| 108 |  ... X RAINCR S I=I+1,RAPMSG=1
 | 
|---|
| 109 |  ... S @(RAVAR_RACNT_")")="NTE"_RAHLFS_I_RAHLFS_RAHLFS_$P($G(^RAMIS(71.4,+K,0)),"^")
 | 
|---|
| 110 |  ... Q
 | 
|---|
| 111 |  .. I RAMULT=("^RAMIS(71,"_RAIEN71_",""EDU"",") D
 | 
|---|
| 112 |  ... I RAPMSG D
 | 
|---|
| 113 |  .... X RAINCR S I=I+1
 | 
|---|
| 114 |  .... S @(RAVAR_RACNT_")")="NTE"_RAHLFS_I_RAHLFS_RAHLFS_" "
 | 
|---|
| 115 |  .... S RAPMSG=0
 | 
|---|
| 116 |  .... Q
 | 
|---|
| 117 |  ... X RAINCR S I=I+1
 | 
|---|
| 118 |  ... S @(RAVAR_RACNT_")")="NTE"_RAHLFS_I_RAHLFS_RAHLFS_K
 | 
|---|
| 119 |  ... Q
 | 
|---|
| 120 |  .. Q
 | 
|---|
| 121 |  . Q
 | 
|---|
| 122 |  I 'RAENALL D
 | 
|---|
| 123 |  . D MSG^XQOR("RA ORDERABLE ITEM UPDATE",RAVARBLE)
 | 
|---|
| 124 |  . D PURGE^RAO7UTL
 | 
|---|
| 125 |  . Q
 | 
|---|
| 126 |  X:RAENALL RAINCR
 | 
|---|
| 127 |  Q
 | 
|---|
| 128 | ENALL ; Whole Rad/Nuc Med Procedure file update.  Called only when Rad/Nuc
 | 
|---|
| 129 |  ; Med or OE/RR are being installed.
 | 
|---|
| 130 |  Q:'$D(XPDNM)  ; quit if not KIDS, xists during pre/post inits
 | 
|---|
| 131 |  ; & environment check routines.
 | 
|---|
| 132 |  L +^RAMIS(71.3):300 D ^RACOMDEL L -^RAMIS(71.3)
 | 
|---|
| 133 |  L +^RAMIS(71):300
 | 
|---|
| 134 |  I '$T D  Q
 | 
|---|
| 135 |  . N TXT S TXT(1)=" "
 | 
|---|
| 136 |  . S TXT(2)="Another user is editing a record in the "
 | 
|---|
| 137 |  . S TXT(2)=TXT(2)_$P($G(^DIC(71,0)),"^")
 | 
|---|
| 138 |  . S TXT(3)="file.  Try again later!"
 | 
|---|
| 139 |  . S XPDQUIT=1 D MES^XPDUTL(.TXT)
 | 
|---|
| 140 |  . Q
 | 
|---|
| 141 |  N RA,RACNT,RAECH,RAENALL,RAFILE,RAFNAME,RAFNUM,RAHLFS,RAINCR,RASTAT
 | 
|---|
| 142 |  N RASUB,RATSTMP,RAVAR,RAXIT,RAY
 | 
|---|
| 143 |  S (RA,RACNT)=0,RAENALL=1,RATSTMP=$$NOW^XLFDT(),RAINCR="S RACNT=RACNT+1"
 | 
|---|
| 144 |  S RASUB="""RAO7""",RAVAR="^TMP("_RASUB_","_RATSTMP_","
 | 
|---|
| 145 |  S RAVARBLE="^TMP("_RASUB_","_RATSTMP_")"
 | 
|---|
| 146 |  D EN1^RAO7UTL ; sets up RAECH & RAHLFS
 | 
|---|
| 147 |  S (RAFILE,RAFNUM)=71,RAFNAME=$P($G(^DIC(RAFNUM,0)),"^"),RASTAT="0^1"
 | 
|---|
| 148 |  X RAINCR S @(RAVAR_RACNT_")")=$$MSH^RAO7UTL("MFN^M01") X RAINCR ;P18 event type
 | 
|---|
| 149 |  D MFI^RAO7UTL("REP")
 | 
|---|
| 150 |  F  S RA=$O(^RAMIS(71,RA)) Q:RA'>0  D  D PURGE1^RAO7UTL
 | 
|---|
| 151 |  . S RA(0)=$G(^RAMIS(71,RA,0)),RA("I")=$G(^RAMIS(71,RA,"I"))
 | 
|---|
| 152 |  . Q:$P(RA("I"),"^")]""&($P(RA("I"),"^")'>DT)  ; inactive date present
 | 
|---|
| 153 |  . S RAY=RA_"^"_$P(RA(0),"^")_"^"_1 D PROC(RAENALL,RAFILE,RASTAT,RAY)
 | 
|---|
| 154 |  . Q
 | 
|---|
| 155 |  D EN^ORMFN(RAVARBLE) K @RAVARBLE,RAVARBLE
 | 
|---|
| 156 |  L -^RAMIS(71) ; unlock whole file
 | 
|---|
| 157 | PARM ;Send Div params for SUBMIT TO prompt and allowing BROAD procedures
 | 
|---|
| 158 |  ;to OE3 so they can populate their OE/RR Parameter Instance file
 | 
|---|
| 159 |  N DIK S DIK="^RA(79,",DIK(1)=".121^AC1" D ENALL^DIK
 | 
|---|
| 160 |  N DIK S DIK="^RA(79,",DIK(1)=".17^AC" D ENALL^DIK
 | 
|---|
| 161 |  Q
 | 
|---|