| 1 | ECXDEPT ;ALB/GRR - Department lookup for extracts;June 11, 2002 ; 9/26/06 3:39pm
 | 
|---|
| 2 |  ;;3.0;DSS EXTRACTS;**46,92**;Dec 22, 1997;Build 30
 | 
|---|
| 3 |  ;Only the Division Logic is implemented and used in this release
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ;Input: X=Division
 | 
|---|
| 6 |  ;Output: Y=Department
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 | DEN(X) ;DENTAL DEPARTMENT LOOKUP
 | 
|---|
| 9 |  ;format key (Feeder system_Feeder location_Feeder key)
 | 
|---|
| 10 |  N ECXFS,ECXFL,ECXFK
 | 
|---|
| 11 |  S ECXFS="DEN"
 | 
|---|
| 12 |  S ECXFL=X ;feeder location is division
 | 
|---|
| 13 |  S ECXFK="" ;always null for dental
 | 
|---|
| 14 |  N ECXKEY S ECXKEY=ECXFS_ECXFL_ECXFK
 | 
|---|
| 15 |  N Y
 | 
|---|
| 16 |  S Y=$$GETDEPT(ECXKEY)
 | 
|---|
| 17 |  I Y="XXXX"!(Y="INAC") D MESBUL(X,ECXFS,ECXFL,ECXFK,Y)
 | 
|---|
| 18 |  Q Y
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 | IVP(X) ;IVP DEPARTMENT LOOKUP
 | 
|---|
| 21 |  ;format key (Feeder system_Feeder location_Feeder key)
 | 
|---|
| 22 |  N ECXFS,ECXFL,ECXFK
 | 
|---|
| 23 |  S ECXFS="IVP" ;feeder system is pharmacy
 | 
|---|
| 24 |  S ECXFL="IVP"_X ;feeder location is IVP_division
 | 
|---|
| 25 |  S ECXFK="" ;feeder key always null for IVP
 | 
|---|
| 26 |  N ECXKEY S ECXKEY=ECXFS_ECXFL_ECXFK
 | 
|---|
| 27 |  N Y
 | 
|---|
| 28 |  S Y=$$GETDEPT(ECXKEY)
 | 
|---|
| 29 |  I Y="XXXX"!(Y="INAC") D MESBUL(X,ECXFS,ECXFL,ECXFK,Y)
 | 
|---|
| 30 |  Q Y
 | 
|---|
| 31 |  ;
 | 
|---|
| 32 | RAD(X,X1,X2,X3) ;RAD DEPARTMENT LOOKUP
 | 
|---|
| 33 |  ;Input  X=division
 | 
|---|
| 34 |  ;       X1=Imaging type
 | 
|---|
| 35 |  ;       X2=CPT Code and any modifiers
 | 
|---|
| 36 |  ;       X3=Procedure
 | 
|---|
| 37 |  ;Output  Y=Department
 | 
|---|
| 38 |  ;format key (Feeder system_Feeder location_Feeder key)
 | 
|---|
| 39 |  N ECXFS,ECXFL,ECXFK
 | 
|---|
| 40 |  S ECXFS="RAD" ;feeder system is radiology
 | 
|---|
| 41 |  S ECXFL=X_"-"_X1 ;feeder location is division_"-"_imaging type
 | 
|---|
| 42 |  I X2=""&(X3=468) S ECXFK=777777 G FORMAT
 | 
|---|
| 43 |  I X2=""&(X3]"") S ECXFK=X3 G FORMAT
 | 
|---|
| 44 |  S ECXFK=$E(X2,1,5)
 | 
|---|
| 45 |  N J F J=8,10,12,14,16 Q:$E(X2,J,J+1)=""  I $E(X2,J,J+1)=26!($E(X2,J,J+1)="TC") S ECXFK=ECXFK_"."_$E(X2,J,J+1) Q  ;look for modifier 26 or TC
 | 
|---|
| 46 | FORMAT N ECXKEY S ECXKEY=ECXFS_ECXFL_ECXFK
 | 
|---|
| 47 |  N Y
 | 
|---|
| 48 |  S Y=$$GETDEPT(ECXKEY)
 | 
|---|
| 49 |  I Y="XXXX"!(Y="INAC") D MESBUL(X,ECXFS,ECXFL,ECXFK,Y)
 | 
|---|
| 50 |  Q Y
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 | UDP(X) ;UDP DEPARTMENT LOOKUP
 | 
|---|
| 53 |  ;format key (Feeder system_Feeder location_Feeder key)
 | 
|---|
| 54 |  N ECXFS,ECXFL,ECXFK
 | 
|---|
| 55 |  S ECXFS="UDP" ;feeder system is pharmacy
 | 
|---|
| 56 |  S ECXFL="UDP"_X ;feeder location is UDP_division
 | 
|---|
| 57 |  S ECXFK="" ;feeder key always null for UDP
 | 
|---|
| 58 |  N ECXKEY S ECXKEY=ECXFS_ECXFL_ECXFK
 | 
|---|
| 59 |  N Y
 | 
|---|
| 60 |  S Y=$$GETDEPT(ECXKEY)
 | 
|---|
| 61 |  I Y="XXXX"!(Y="INAC") D MESBUL(X,ECXFS,ECXFL,ECXFK,Y)
 | 
|---|
| 62 |  Q Y
 | 
|---|
| 63 |  ;
 | 
|---|
| 64 | MTL(X,X1,X2) ;MTL DEPARTMENT LOOKUP
 | 
|---|
| 65 |  ;X=DIVISION, X1=NAME OF TEST,X2=STATION NUMBER
 | 
|---|
| 66 |  ;format key (Feeder System_Feeder location_Feeder key)
 | 
|---|
| 67 |  N ECXFS,ECXFL,ECXFK
 | 
|---|
| 68 |  S ECXFS="MTL" ;feeder system for MTL
 | 
|---|
| 69 |  S ECXFK="" ;feeder key always null for MTL
 | 
|---|
| 70 |  I X1'="ASI"&(X1'="GAF") S ECXFL=X_"PSOTSTLAB" ;p-@@@ line added
 | 
|---|
| 71 |  E  S ECXFL=X_X1
 | 
|---|
| 72 |  S ECXKEY=ECXFS_ECXFL_ECXFK
 | 
|---|
| 73 |  N Y
 | 
|---|
| 74 |  S Y=$$GETDEPT(ECXKEY)
 | 
|---|
| 75 |  I Y="XXXX"!(Y="INAC") D MESBUL(X2,ECXFS,ECXFL,ECXFK,Y)
 | 
|---|
| 76 |  Q Y
 | 
|---|
| 77 |  ;
 | 
|---|
| 78 | PRE(X,X1,X2) ;PRE DEPARTMENT LOOKUP
 | 
|---|
| 79 |  ;Input  X=Division
 | 
|---|
| 80 |  ;       X1=Whether mail or not
 | 
|---|
| 81 |  ;       X2=STATION NUMBER
 | 
|---|
| 82 |  N ECXFS,ECXFL,ECXFK
 | 
|---|
| 83 |  S ECXFS="PRE" ;feeder system for PRE
 | 
|---|
| 84 |  S ECXFK="" ;feeder key always null for PRE
 | 
|---|
| 85 |  I X1=2 S ECXFL="CMOPDSU"_X
 | 
|---|
| 86 |  E  S ECXFL="PRE"_X
 | 
|---|
| 87 |  S ECXKEY=ECXFS_ECXFL_ECXFK
 | 
|---|
| 88 |  N Y
 | 
|---|
| 89 |  S Y=$$GETDEPT(ECXKEY)
 | 
|---|
| 90 |  I Y="XXXX"!(Y="INAC") D MESBUL(X2,ECXFS,ECXFL,ECXFK,Y)
 | 
|---|
| 91 |  Q Y
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 | GETDEPT(X) ;LOOKUP DEPARTMENT
 | 
|---|
| 94 |  ;Input:  X=lookup key
 | 
|---|
| 95 |  ;Output  Y=Department
 | 
|---|
| 96 |  ;Look for key in AA crossreference
 | 
|---|
| 97 |  N Y,ECXIEN S Y="XXXX"
 | 
|---|
| 98 |  I $D(^ECX(727.6,"AA",X)) D
 | 
|---|
| 99 |  .;Get ien of department
 | 
|---|
| 100 |  .S ECXIEN=$O(^ECX(727.6,"AA",X,0))
 | 
|---|
| 101 |  .;Get department
 | 
|---|
| 102 |  .S Y=$S($P(^ECX(727.6,ECXIEN,0),"^",6)]"":"INAC",1:$P(^ECX(727.6,ECXIEN,0),"^"))
 | 
|---|
| 103 |  Q Y
 | 
|---|
| 104 |  ;
 | 
|---|
| 105 | GETDIV(X) ;GET PRODUCTION DIVISION
 | 
|---|
| 106 |  ;Input   X=ien medical center division, file #40.8
 | 
|---|
| 107 |  ;Output  Y=division number 3-6 characters
 | 
|---|
| 108 |  N Y S Y=""
 | 
|---|
| 109 |  Q:X="" Y
 | 
|---|
| 110 |  S Y=$$GET1^DIQ(40.8,X,.07,"I") ;Get institution file pointer
 | 
|---|
| 111 |  Q $S(Y="":"",1:$$RADDIV(Y)) ;Get station number
 | 
|---|
| 112 |  ;
 | 
|---|
| 113 | PREDIV(X) ;GET PRODUCTION DIVISION FOR PRE
 | 
|---|
| 114 |  ;Input  X=ien Outpatient Site file (#59)
 | 
|---|
| 115 |  ;Output Y=division number 3-6 characters
 | 
|---|
| 116 |  N Y,IN S Y=""
 | 
|---|
| 117 |  K ^TMP($J,"ECXDIV")
 | 
|---|
| 118 |  Q:X="" Y
 | 
|---|
| 119 |  D PSS^PSO59(X,"","ECXDIV")
 | 
|---|
| 120 |  S IN=$P($G(^TMP($J,"ECXDIV",X,100)),U,1)  ;Get related inst number
 | 
|---|
| 121 |  S Y=$$RADDIV(IN)
 | 
|---|
| 122 |  K ^TMP($J,"ECXDIV")
 | 
|---|
| 123 |  Q Y
 | 
|---|
| 124 |  ;
 | 
|---|
| 125 | RADDIV(X) ;GET PRODUCTION DIVISION FOR RAD
 | 
|---|
| 126 |  ;Input  X=ien of Institution file
 | 
|---|
| 127 |  ;Output Y=division number 3-6 characters
 | 
|---|
| 128 |  N Y S Y=""
 | 
|---|
| 129 |  Q:X="" Y
 | 
|---|
| 130 |  S Y=$P($G(^DIC(4,X,99)),"^",1) ;Get station number
 | 
|---|
| 131 |  Q Y
 | 
|---|
| 132 |  ;
 | 
|---|
| 133 | MESBUL(ECXSN,ECXFS,ECXFL,ECXFK,ECXDEPT) ;SEND BULLETIN FOR TABLE LOOKUP ERROR
 | 
|---|
| 134 |  ;
 | 
|---|
| 135 |  N XMY,XMDUZ,XMDT,XMZ,XMB,XMCHAN,XMSUB
 | 
|---|
| 136 |  S XMCHAN=1
 | 
|---|
| 137 |  S XMSUB="A DSS Department Error was found for Station Number: "
 | 
|---|
| 138 |  S XMDUZ="ECX Department Extract Application"
 | 
|---|
| 139 |  S XMB="ECX DSS DEPARTMENT TABLE ERROR"
 | 
|---|
| 140 |  S XMB(1)=ECXSN
 | 
|---|
| 141 |  S XMB(2)=ECXFS
 | 
|---|
| 142 |  S XMB(3)=ECXFL
 | 
|---|
| 143 |  S XMB(4)=ECXFK
 | 
|---|
| 144 |  S XMB(5)=ECXDEPT
 | 
|---|
| 145 |  S XMDT=$$NOW^XLFDT
 | 
|---|
| 146 |  D ^XMB
 | 
|---|
| 147 |  Q
 | 
|---|
| 148 |  ;
 | 
|---|