- RADD2 ;HISC/GJC/CAH-Radiology Data Dictionary Utility Routine ;5/14/97 10:31
- ;;5.0;Radiology/Nuclear Medicine;**84,47**;Mar 16, 1998;Build 21
- ;
- ;Integration Agreements
- ;----------------------
- ;EN^DDIOL(10142); FILE^DIE(2053);NOTE^ORX3(868);MES^XPDUTL(10141)
- ;
- EN1(RAX,RAY) ; Input transform for the .01 field (Procedure) for the Rad/Nuc
- ; Med Common Procedure file i.e, ^RAMIS(71.3
- ; Procedure must not have an inactive date before today in file 71
- ; Procedure in file 71 must have same imaging type as the one
- ; selected before editing this record in file 71.3
- ; If 'Parent' type procedure, it must have at least 1 descendent
- ; 'RAX' is the value of the .01 field in ^RAMIS(71.3,
- ; 'RAY' are ien's of entries in ^RAMIS(71,
- I '$G(RAIMGTYI) Q 0
- I $S('$D(^("I")):1,'^("I"):1,DT'>^("I"):1,1:0),$S(RAIMGTYI=$P($G(^RAMIS(71,+RAY,0)),"^",12):1,1:0),$S($P(^RAMIS(71,+RAY,0),U,6)'="P":1,$O(^RAMIS(71,+RAY,4,0)):1,1:0)
- Q $T
- ;
- CH(RAY,RAX) ; This subroutine will fire off the 'Radiology Request Cancel
- ; /Hold' notification as defined in the 'OE/RR NOTIFICATIONS' file.
- ; Only if request is either cancelled or held. Called from the set
- ; logic of the 'ACHN' xref in ^DD(75.1,5) field definition.
- ;
- ; Input variables:
- ; 'RAX'=Request status of the order, $S(X=1:'discontinued',X=3:'hold')
- ; 'RAY'=ien of the order in the RAD/NUC MED ORDERS file.
- ;
- Q:(RAY'=+RAY) Q:(RAX'=1)&(RAX'=3)
- N %,C,D,D0,DA,DC,DDER,DE,DG,DH,DI,DIC,DIE,DIEDA,DIEL,DIFLD,DIP,DIW,DIWT
- N DK,DL,DM,DN,DP,DQ,DR,DU,DV,DW,I,J,N,ORBPMSG,ORBXDATA,ORIFN,ORNOTE,ORVP
- N RA751,RADFN,RANME,RAOIFN,RAOLP,RAOPTN,RAORDS,RAOREA,RAOSTS,RAPARENT
- N RAPRC,RAXIT,X,Y
- S RA751=$G(^RAO(75.1,RAY,0)) Q:RA751']""
- S RAOIFN=RAY,RADFN=+$P(RA751,"^")
- S RAPRC=$P($G(^RAMIS(71,+$P(RA751,"^",2),0)),"^"),ORVP=RADFN_";DPT("
- S ORBPMSG=$S(RAX=1:"Discontinued - ",1:"On hold - ")_$E(RAPRC,1,17)
- S ORBXDATA=RAOIFN_","_RADFN,ORIFN=+$P(RA751,"^",7),ORNOTE(26)=1
- D NOTE^ORX3
- Q
- INACOM(RAD0) ; Check inactive date on the Rad/Nuc Med Procedure file (71)
- ; for the Common Procedure before setting our inactive procedure to
- ; active. Called from the 'RA COMMON PROCEDURE EDIT' input template.
- ; Option: Common Procedure Enter/Edit (13^RAMAIN2)
- ; Input : RAD0-ien of Rad/Nuc Med Common Procedure
- ; Output: if Common cannot be re-activated, reset the 'Inactive' field
- ; to 'yes'.
- N RAINA S RAINA=$P($G(^RAMIS(71,+$P($G(^RAMIS(71.3,RAD0,0)),"^"),"I")),"^")
- Q:RAINA=""!(RAINA>DT) "@15" ; we can inactivate the common
- N RAFDA,RAMSG
- S RAFDA(71.3,RAD0_",",4)="Y" D FILE^DIE("","RAFDA","") S RAMSG(1)=$C(7)
- S RAMSG(2)="You cannot add this procedure to the common procedure list"
- S RAMSG(3)="because it is inactivated in the Rad/Nuc Med Procedures file."
- S RAMSG(4)="You must first re-activate the procedure through the 'Procedure"
- S RAMSG(5)="Enter/Edit' option.",RAMSG(6)="" D MES^XPDUTL(.RAMSG)
- Q "@10" ; reset 'Inactive' to 'yes', re-edit field.
- ;
- EN2() ; called from ^DD(74,0,"ID","WRITE")
- ; display long case #'s in the same print set as current record
- N RA1,RA2
- S RA1=0,RA2=""
- ; F S RA1=$O(^RARPT(Y,1,"B",RA1)) Q:'RA1 S RA2=RA2_$S(RA2="":"-",1:",-")_$P(RA1,"-",2)
- F S RA1=$O(^RARPT(Y,1,"B",RA1)) Q:'RA1 S RA2=RA2_$S(RA2="":"-",1:",-")_$P(RA1,"-",$L(RA1,"-")) ;P47 to accommodate possible SSAN format
- Q RA2
- USUAL(RADA,RAX) ; To insure that the USUAL DOSE value falls between the
- ; HIGH ADULT DOSE and the LOW ADULT DOSE.
- ; Input Variables:
- ; RADA -> top level/sub-file level IEN's
- ; RAX -> value input by the user
- ; Output Variable: $S(1: value is accepted, 0: value not accepted)
- ;
- Q:RAX="" 0 ; X does not exist
- N RA7108,RAH,RAL S RA7108=$G(^RAMIS(71,RADA(1),"NUC",RADA,0))
- S RAH=$P(RA7108,"^",5),RAL=$P(RA7108,"^",6)
- S RAH=$S(RAH="":99999.9999,1:RAH),RAL=$S(RAL="":.0001,1:RAL)
- I (+RAX<RAL)!(+RAX>RAH) D Q 0 ; value is not accepted
- . N RARRY S RARRY(1)="The 'USUAL DOSE' must fall within the range of: "
- . S RARRY(1)=RARRY(1)_RAL_" - "_RAH_" "
- . D EN^DDIOL(.RARRY)
- . Q
- E Q 1 ; value accepted
- ;
- RANGE(RADA) ; Determine the range in which the 'USUAL DOSE' must fall
- ; Input Variables:
- ; RADA -> top level/sub-file level IEN's
- ; Output Variable:
- ; RANGE -> the range in which the 'USUAL DOSE' must fall
- N RA7108,RAH,RAL
- S RA7108=$G(^RAMIS(71,RADA(1),"NUC",RADA,0))
- S RAH=$P(RA7108,"^",5),RAL=$P(RA7108,"^",6)
- S RAH=$S(RAH="":99999.9999,1:RAH),RAL=$S(RAL="":.0001,1:RAL)
- Q RAL_"-"_RAH
- MEDOSE(RAY,RADT) ; Determine if this individual (RAY) is authorized to
- ; administer medications. Called from ^DD(70.15,4,12.1)
- ; Input : RAY (pnt to 200) - the individual being checked at the moment
- ; RADT - Date of the examination
- ; Output: '1' - user is authorized to administer medications, else '0'
- ;
- Q:$D(^VA(200,"ARC","R",RAY)) 1 ; Rad/Nuc Med Class: Resident
- Q:$D(^VA(200,"ARC","S",RAY)) 1 ; Rad/Nuc Med Class: Staff
- Q:$D(^VA(200,"ARC","T",RAY)) 1 ; Rad/Nuc Med Class: Technologist
- Q:$D(^XUSEC("ORES",RAY)) 1 Q:$D(^XUSEC("ORELSE",RAY)) 1
- N RAUTH S RAUTH=$G(^VA(200,RAY,"PS"))
- ; If authorized to write med orders ($P(RAUTH,"^")=1) and inactivation
- ; date null -OR- inactivation date greater than or equal to the exam
- ; date individual is authorized.
- Q:+$P(RAUTH,"^")&($S('$P(RAUTH,"^",4):1,$P(RAUTH,"^",4)'<RADT:1,1:0)) 1
- Q 0
- ;
- PRIDXIXK(DA,X) ;This subroutine executes the KILL logic for the 'new style' AD cross-
- ;reference on the 'PRIMARY DIAGNOSTIC CODE' (data dictionary: 70.03; field: 13)
- ;Input: DA - an array where DA(2)=RADFN, DA(1)=RADTI, & DA=RACNI
- ; X - the primary diagnostic code value (this field points to file 78.3)
- N RACNI,RADFN,RADTI,RAFDA,RAIENS,RAX
- S RADFN=DA(2),RADTI=DA(1),RACNI=DA,RAX=X ;save the variables just in case
- S RAIENS=DA_","_DA(1)_","_DA(2)_",",RAFDA(70.03,RAIENS,20)="@"
- D FILE^DIE(,"RAFDA") ;delete data in 'DIAGNOSTIC PRINT DATE' (DD: 70.03; field: 20)
- K ^RADPT("AD",RAX,RADFN,RADTI,RACNI)
- Q
- ;
- RADD2 ;HISC/GJC/CAH-Radiology Data Dictionary Utility Routine ;5/14/97 10:31
- +1 ;;5.0;Radiology/Nuclear Medicine;**84,47**;Mar 16, 1998;Build 21
- +2 ;
- +3 ;Integration Agreements
- +4 ;----------------------
- +5 ;EN^DDIOL(10142); FILE^DIE(2053);NOTE^ORX3(868);MES^XPDUTL(10141)
- +6 ;
- EN1(RAX,RAY) ; Input transform for the .01 field (Procedure) for the Rad/Nuc
- +1 ; Med Common Procedure file i.e, ^RAMIS(71.3
- +2 ; Procedure must not have an inactive date before today in file 71
- +3 ; Procedure in file 71 must have same imaging type as the one
- +4 ; selected before editing this record in file 71.3
- +5 ; If 'Parent' type procedure, it must have at least 1 descendent
- +6 ; 'RAX' is the value of the .01 field in ^RAMIS(71.3,
- +7 ; 'RAY' are ien's of entries in ^RAMIS(71,
- +8 IF '$GET(RAIMGTYI)
- QUIT 0
- +9 IF $SELECT('$DATA(^("I")):1,'^("I"):1,DT'>^("I"):1,1:0)
- IF $SELECT(RAIMGTYI=$PIECE($GET(^RAMIS(71,+RAY,0)),"^",12):1,1:0)
- IF $SELECT($PIECE(^RAMIS(71,+RAY,0),U,6)'="P":1,$ORDER(^RAMIS(71,+RAY,4,0)):1,1:0)
- +10 QUIT $TEST
- +11 ;
- CH(RAY,RAX) ; This subroutine will fire off the 'Radiology Request Cancel
- +1 ; /Hold' notification as defined in the 'OE/RR NOTIFICATIONS' file.
- +2 ; Only if request is either cancelled or held. Called from the set
- +3 ; logic of the 'ACHN' xref in ^DD(75.1,5) field definition.
- +4 ;
- +5 ; Input variables:
- +6 ; 'RAX'=Request status of the order, $S(X=1:'discontinued',X=3:'hold')
- +7 ; 'RAY'=ien of the order in the RAD/NUC MED ORDERS file.
- +8 ;
- +9 IF (RAY'=+RAY)
- QUIT
- IF (RAX'=1)&(RAX'=3)
- QUIT
- +10 NEW %,C,D,D0,DA,DC,DDER,DE,DG,DH,DI,DIC,DIE,DIEDA,DIEL,DIFLD,DIP,DIW,DIWT
- +11 NEW DK,DL,DM,DN,DP,DQ,DR,DU,DV,DW,I,J,N,ORBPMSG,ORBXDATA,ORIFN,ORNOTE,ORVP
- +12 NEW RA751,RADFN,RANME,RAOIFN,RAOLP,RAOPTN,RAORDS,RAOREA,RAOSTS,RAPARENT
- +13 NEW RAPRC,RAXIT,X,Y
- +14 SET RA751=$GET(^RAO(75.1,RAY,0))
- IF RA751']""
- QUIT
- +15 SET RAOIFN=RAY
- SET RADFN=+$PIECE(RA751,"^")
- +16 SET RAPRC=$PIECE($GET(^RAMIS(71,+$PIECE(RA751,"^",2),0)),"^")
- SET ORVP=RADFN_";DPT("
- +17 SET ORBPMSG=$SELECT(RAX=1:"Discontinued - ",1:"On hold - ")_$EXTRACT(RAPRC,1,17)
- +18 SET ORBXDATA=RAOIFN_","_RADFN
- SET ORIFN=+$PIECE(RA751,"^",7)
- SET ORNOTE(26)=1
- +19 DO NOTE^ORX3
- +20 QUIT
- INACOM(RAD0) ; Check inactive date on the Rad/Nuc Med Procedure file (71)
- +1 ; for the Common Procedure before setting our inactive procedure to
- +2 ; active. Called from the 'RA COMMON PROCEDURE EDIT' input template.
- +3 ; Option: Common Procedure Enter/Edit (13^RAMAIN2)
- +4 ; Input : RAD0-ien of Rad/Nuc Med Common Procedure
- +5 ; Output: if Common cannot be re-activated, reset the 'Inactive' field
- +6 ; to 'yes'.
- +7 NEW RAINA
- SET RAINA=$PIECE($GET(^RAMIS(71,+$PIECE($GET(^RAMIS(71.3,RAD0,0)),"^"),"I")),"^")
- +8 ; we can inactivate the common
- IF RAINA=""!(RAINA>DT)
- QUIT "@15"
- +9 NEW RAFDA,RAMSG
- +10 SET RAFDA(71.3,RAD0_",",4)="Y"
- DO FILE^DIE("","RAFDA","")
- SET RAMSG(1)=$CHAR(7)
- +11 SET RAMSG(2)="You cannot add this procedure to the common procedure list"
- +12 SET RAMSG(3)="because it is inactivated in the Rad/Nuc Med Procedures file."
- +13 SET RAMSG(4)="You must first re-activate the procedure through the 'Procedure"
- +14 SET RAMSG(5)="Enter/Edit' option."
- SET RAMSG(6)=""
- DO MES^XPDUTL(.RAMSG)
- +15 ; reset 'Inactive' to 'yes', re-edit field.
- QUIT "@10"
- +16 ;
- EN2() ; called from ^DD(74,0,"ID","WRITE")
- +1 ; display long case #'s in the same print set as current record
- +2 NEW RA1,RA2
- +3 SET RA1=0
- SET RA2=""
- +4 ; F S RA1=$O(^RARPT(Y,1,"B",RA1)) Q:'RA1 S RA2=RA2_$S(RA2="":"-",1:",-")_$P(RA1,"-",2)
- +5 ;P47 to accommodate possible SSAN format
- FOR
- SET RA1=$ORDER(^RARPT(Y,1,"B",RA1))
- IF 'RA1
- QUIT
- SET RA2=RA2_$SELECT(RA2="":"-",1:",-")_$PIECE(RA1,"-",$LENGTH(RA1,"-"))
- +6 QUIT RA2
- USUAL(RADA,RAX) ; To insure that the USUAL DOSE value falls between the
- +1 ; HIGH ADULT DOSE and the LOW ADULT DOSE.
- +2 ; Input Variables:
- +3 ; RADA -> top level/sub-file level IEN's
- +4 ; RAX -> value input by the user
- +5 ; Output Variable: $S(1: value is accepted, 0: value not accepted)
- +6 ;
- +7 ; X does not exist
- IF RAX=""
- QUIT 0
- +8 NEW RA7108,RAH,RAL
- SET RA7108=$GET(^RAMIS(71,RADA(1),"NUC",RADA,0))
- +9 SET RAH=$PIECE(RA7108,"^",5)
- SET RAL=$PIECE(RA7108,"^",6)
- +10 SET RAH=$SELECT(RAH="":99999.9999,1:RAH)
- SET RAL=$SELECT(RAL="":.0001,1:RAL)
- +11 ; value is not accepted
- IF (+RAX<RAL)!(+RAX>RAH)
- Begin DoDot:1
- +12 NEW RARRY
- SET RARRY(1)="The 'USUAL DOSE' must fall within the range of: "
- +13 SET RARRY(1)=RARRY(1)_RAL_" - "_RAH_" "
- +14 DO EN^DDIOL(.RARRY)
- +15 QUIT
- End DoDot:1
- QUIT 0
- +16 ; value accepted
- IF '$TEST
- QUIT 1
- +17 ;
- RANGE(RADA) ; Determine the range in which the 'USUAL DOSE' must fall
- +1 ; Input Variables:
- +2 ; RADA -> top level/sub-file level IEN's
- +3 ; Output Variable:
- +4 ; RANGE -> the range in which the 'USUAL DOSE' must fall
- +5 NEW RA7108,RAH,RAL
- +6 SET RA7108=$GET(^RAMIS(71,RADA(1),"NUC",RADA,0))
- +7 SET RAH=$PIECE(RA7108,"^",5)
- SET RAL=$PIECE(RA7108,"^",6)
- +8 SET RAH=$SELECT(RAH="":99999.9999,1:RAH)
- SET RAL=$SELECT(RAL="":.0001,1:RAL)
- +9 QUIT RAL_"-"_RAH
- MEDOSE(RAY,RADT) ; Determine if this individual (RAY) is authorized to
- +1 ; administer medications. Called from ^DD(70.15,4,12.1)
- +2 ; Input : RAY (pnt to 200) - the individual being checked at the moment
- +3 ; RADT - Date of the examination
- +4 ; Output: '1' - user is authorized to administer medications, else '0'
- +5 ;
- +6 ; Rad/Nuc Med Class: Resident
- IF $DATA(^VA(200,"ARC","R",RAY))
- QUIT 1
- +7 ; Rad/Nuc Med Class: Staff
- IF $DATA(^VA(200,"ARC","S",RAY))
- QUIT 1
- +8 ; Rad/Nuc Med Class: Technologist
- IF $DATA(^VA(200,"ARC","T",RAY))
- QUIT 1
- +9 IF $DATA(^XUSEC("ORES",RAY))
- QUIT 1
- IF $DATA(^XUSEC("ORELSE",RAY))
- QUIT 1
- +10 NEW RAUTH
- SET RAUTH=$GET(^VA(200,RAY,"PS"))
- +11 ; If authorized to write med orders ($P(RAUTH,"^")=1) and inactivation
- +12 ; date null -OR- inactivation date greater than or equal to the exam
- +13 ; date individual is authorized.
- +14 IF +$PIECE(RAUTH,"^")&($SELECT('$PIECE(RAUTH,"^",4)
- QUIT 1
- +15 QUIT 0
- +16 ;
- PRIDXIXK(DA,X) ;This subroutine executes the KILL logic for the 'new style' AD cross-
- +1 ;reference on the 'PRIMARY DIAGNOSTIC CODE' (data dictionary: 70.03; field: 13)
- +2 ;Input: DA - an array where DA(2)=RADFN, DA(1)=RADTI, & DA=RACNI
- +3 ; X - the primary diagnostic code value (this field points to file 78.3)
- +4 NEW RACNI,RADFN,RADTI,RAFDA,RAIENS,RAX
- +5 ;save the variables just in case
- SET RADFN=DA(2)
- SET RADTI=DA(1)
- SET RACNI=DA
- SET RAX=X
- +6 SET RAIENS=DA_","_DA(1)_","_DA(2)_","
- SET RAFDA(70.03,RAIENS,20)="@"
- +7 ;delete data in 'DIAGNOSTIC PRINT DATE' (DD: 70.03; field: 20)
- DO FILE^DIE(,"RAFDA")
- +8 KILL ^RADPT("AD",RAX,RADFN,RADTI,RACNI)
- +9 QUIT
- +10 ;