MAGVORDR ;WOIFO/RRB/BT/PMK/DAC/JSJ - MAGV Order Lookup ; 14 Jul 2021@10:07:45
;;3.0;IMAGING;**118,138,156,307**;Mar 19, 2002;Build 28
;; Per VHA Directive 2004-038, this routine should not be modified.
;; +---------------------------------------------------------------+
;; | Property of the US Government. |
;; | No permission to copy or redistribute this software is given. |
;; | Use of unreleased versions of this software requires the user |
;; | to execute a written test agreement with the VistA Imaging |
;; | Development Office of the Department of Veterans Affairs, |
;; | telephone (301) 734-0100. |
;; | The Food and Drug Administration classifies this software as |
;; | a medical device. As such, it may not be changed in any way. |
;; | Modifications to this software may result in an adulterated |
;; | medical device under 21CFR820, the use of which is considered |
;; | to be a violation of US Federal Statutes. |
;; +---------------------------------------------------------------+
;;
;
; Reference to FIND1^DIC in ICR #2051
; Reference to GET1^DIQ in ICR #2056
; Reference to ACCFIND^RAAPI in ICR #5020
;
;
; Lookup the patient/study in the imaging service's database
; The imaging service, IMGSVC (RAD or CON), and case number, CASENUMB(accession)
; are required variables that must be passed to the LOOKUP subroutine.
;
; Output will be in the form of a string:
;
; Happy case example: 0~DFN~SITE (0~12345~660)
;
; Incorrect accession # format or not present: -1~BAD CASE #
;
; No case on file: -1~NO CASE #
Q
;
LOOKUP(CASENUMB,IMGSVC) ; MAGV Order Lookup
;
N RADATA
;
I "^RAD^CON^LAB^"'[("^"_IMGSVC_"^") Q "-1~INVALID IMAGE SERVICE"
I $G(CASENUMB)="" Q "-1~BAD CASE #"
;
I IMGSVC="RAD" D
. S RADATA=$$RADLKUP(CASENUMB)
. Q
E I IMGSVC="CON" D
. I '$$GMRCIEN^MAGDFCNV(CASENUMB) S RADATA="-1~BAD CASE #" Q
. S RADATA=$$CONLKUP(CASENUMB)
. Q
E I IMGSVC="LAB" D ; P138
. S RADATA=$$LABLKUP(CASENUMB)
. Q
;
Q RADATA
;
RADLKUP(CASENUMB) ; Radiology patient/study lookup
;
N CPTCODE ;-- CPT code for the procedure
N CPTNAME ;-- CPT name for the procedure
N DFN
N EXAMSTS ;-- Exam status (don't post images to CANCELLED exams)
N PROCIEN ;-- radiology procedure ien in ^RAMIS(71)
N RAIX ;----- cross reference subscript for case number lookup
N RADPT1 ;--- first level subscript in ^RADPT
N RADPT2 ;--- second level subscript in ^RADPT (after "DT")
N RADPT3 ;--- third level subscript in ^RADPT (after "P")
N SITE
N I,LIST,VARIABLE,X,Z
;
; find the patient/study in ^RARPT using the Radiology Case Number
;
S X=$S(CASENUMB'["-"!($L($T(ACCFIND^RAAPI))=0):$$OLDCASE(CASENUMB,.LIST),1:$$ACCFIND^RAAPI(CASENUMB,.LIST))
I X'=1 Q "-1~NO CASE #" ; No Case
;
S X=LIST(1) ; two conditions, no accession number & duplicate
S RADPT1=$P(X,"^",1),RADPT2=$P(X,"^",2),RADPT3=$P(X,"^",3)
I RADPT1=""!(RADPT2="")!(RADPT3="") Q "-1~BAD CASE #"
;
I '$D(^RADPT(RADPT1,0)) Q "-1~NO CASE #" ; no patient demographics file pointer
;
; get patient demographics file pointer
S X=^RADPT(RADPT1,0),DFN=$P(X,"^")
S SITE=$P($G(^RADPT(RADPT1,"DT",RADPT2,0)),"^",3)
;
; do not include cancelled exam
S EXAMSTS=$P($G(^RADPT(RADPT1,"DT",RADPT2,"P",RADPT3,0)),"^",3) ; P156 DAC - Fixed undefined error
I EXAMSTS="" Q "-1~BAD CASE #"
S EXAMSTS=$$GET1^DIQ(72,EXAMSTS,.01)
I EXAMSTS="" Q "-1~BAD CASE #"
I EXAMSTS="CANCELLED" Q "-1~NO CASE #"
;
Q "0~"_DFN_"~"_SITE
;
CONLKUP(CASENUMB) ; CPRS Consult/Procedure patient/study lookup
;
N DFN
N EXAMSTS ;-- Exam status (don't post images to CANCELLED exams)
N GMRCIEN
N SITE
;
S GMRCIEN=$$GMRCIEN^MAGDFCNV(CASENUMB)
S DFN=$$GET1^DIQ(123,GMRCIEN,.02,"I")
I DFN="" Q "-1~NO CASE #" ; no patient demographics file pointer
S SITE=$$GET1^DIQ(123,GMRCIEN,.05,"I")
I SITE="" Q "-1~NO CASE #" ; incomplete consult study
;
S EXAMSTS=$$GET1^DIQ(123,GMRCIEN,8) ; check for cancelled exam
I EXAMSTS="CANCELLED" Q "-1~NO CASE #"
;
Q "0~"_DFN_"~"_SITE
;
OLDCASE(CASENUMB,LIST) ; Lookup case numbers using old method
;
S RAIX=$S($D(^RADPT("C")):"C",CASENUMB["-":"ADC",1:"AE") ; for Radiology Patch RA*5*7
S RADPT1=$O(^RADPT(RAIX,CASENUMB,"")) I 'RADPT1 Q 0
S RADPT2=$O(^RADPT(RAIX,CASENUMB,RADPT1,"")) I 'RADPT2 Q 0
S RADPT3=$O(^RADPT(RAIX,CASENUMB,RADPT1,RADPT2,"")) I 'RADPT3 Q 0
S LIST(1)=RADPT1_"^"_RADPT2_"^"_RADPT3
Q 1 ; Success
;
;
LABLKUP(ACNUMB) ; Lab patient/study lookup - P138
N FMYEAR,LRAA,LRDFN,LRSS,IENS,YEAR,CASE,SITE,ABBR ;P307
S ABBR=$P(ACNUMB," ",1),YEAR=$P(ACNUMB," ",2),CASE=$P(ACNUMB," ",3) ;P307
S LRAA=$$FIND1^DIC(68,"","BX",ABBR,"","","ERR") ; get lab area index ;P307
S FMYEAR="3"_YEAR_"0000"
S IENS=CASE_","_FMYEAR_","_LRAA
; lookup in ACCESSION file (#68)
S LRDFN=$$GET1^DIQ(68.02,IENS,.01)
I LRDFN="" Q "-1~PATIENT NOT IN LAB FILE" ; patient not in LAB DATA file (#63)
S SITE=$$GET1^DIQ(68.02,IENS,26,"I")
I $$GET1^DIQ(68.02,IENS,1)'="PATIENT" Q "-1~WRONG PATIENT" ; patient not in PATIENT file (#2)
I $$GET1^DIQ(68.02,IENS,15)'=CASENUMB Q "-1~WRONG SPECIMEN" ; not right specimen
; lookup in LAB DATA file (#63)
I $$GET1^DIQ(63,LRDFN,.02)'="PATIENT" Q "-1~PATIENT NOT ON FILE" ; patient not in PATIENT file (#2)
S DFN=$$GET1^DIQ(63,LRDFN,.03,"I")
Q "0~"_DFN_"~"_SITE
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HMAGVORDR 5508 printed Dec 13, 2024@02:10:01 Page 2
MAGVORDR ;WOIFO/RRB/BT/PMK/DAC/JSJ - MAGV Order Lookup ; 14 Jul 2021@10:07:45
+1 ;;3.0;IMAGING;**118,138,156,307**;Mar 19, 2002;Build 28
+2 ;; Per VHA Directive 2004-038, this routine should not be modified.
+3 ;; +---------------------------------------------------------------+
+4 ;; | Property of the US Government. |
+5 ;; | No permission to copy or redistribute this software is given. |
+6 ;; | Use of unreleased versions of this software requires the user |
+7 ;; | to execute a written test agreement with the VistA Imaging |
+8 ;; | Development Office of the Department of Veterans Affairs, |
+9 ;; | telephone (301) 734-0100. |
+10 ;; | The Food and Drug Administration classifies this software as |
+11 ;; | a medical device. As such, it may not be changed in any way. |
+12 ;; | Modifications to this software may result in an adulterated |
+13 ;; | medical device under 21CFR820, the use of which is considered |
+14 ;; | to be a violation of US Federal Statutes. |
+15 ;; +---------------------------------------------------------------+
+16 ;;
+17 ;
+18 ; Reference to FIND1^DIC in ICR #2051
+19 ; Reference to GET1^DIQ in ICR #2056
+20 ; Reference to ACCFIND^RAAPI in ICR #5020
+21 ;
+22 ;
+23 ; Lookup the patient/study in the imaging service's database
+24 ; The imaging service, IMGSVC (RAD or CON), and case number, CASENUMB(accession)
+25 ; are required variables that must be passed to the LOOKUP subroutine.
+26 ;
+27 ; Output will be in the form of a string:
+28 ;
+29 ; Happy case example: 0~DFN~SITE (0~12345~660)
+30 ;
+31 ; Incorrect accession # format or not present: -1~BAD CASE #
+32 ;
+33 ; No case on file: -1~NO CASE #
+34 QUIT
+35 ;
LOOKUP(CASENUMB,IMGSVC) ; MAGV Order Lookup
+1 ;
+2 NEW RADATA
+3 ;
+4 IF "^RAD^CON^LAB^"'[("^"_IMGSVC_"^")
QUIT "-1~INVALID IMAGE SERVICE"
+5 IF $GET(CASENUMB)=""
QUIT "-1~BAD CASE #"
+6 ;
+7 IF IMGSVC="RAD"
Begin DoDot:1
+8 SET RADATA=$$RADLKUP(CASENUMB)
+9 QUIT
End DoDot:1
+10 IF '$TEST
IF IMGSVC="CON"
Begin DoDot:1
+11 IF '$$GMRCIEN^MAGDFCNV(CASENUMB)
SET RADATA="-1~BAD CASE #"
QUIT
+12 SET RADATA=$$CONLKUP(CASENUMB)
+13 QUIT
End DoDot:1
+14 ; P138
IF '$TEST
IF IMGSVC="LAB"
Begin DoDot:1
+15 SET RADATA=$$LABLKUP(CASENUMB)
+16 QUIT
End DoDot:1
+17 ;
+18 QUIT RADATA
+19 ;
RADLKUP(CASENUMB) ; Radiology patient/study lookup
+1 ;
+2 ;-- CPT code for the procedure
NEW CPTCODE
+3 ;-- CPT name for the procedure
NEW CPTNAME
+4 NEW DFN
+5 ;-- Exam status (don't post images to CANCELLED exams)
NEW EXAMSTS
+6 ;-- radiology procedure ien in ^RAMIS(71)
NEW PROCIEN
+7 ;----- cross reference subscript for case number lookup
NEW RAIX
+8 ;--- first level subscript in ^RADPT
NEW RADPT1
+9 ;--- second level subscript in ^RADPT (after "DT")
NEW RADPT2
+10 ;--- third level subscript in ^RADPT (after "P")
NEW RADPT3
+11 NEW SITE
+12 NEW I,LIST,VARIABLE,X,Z
+13 ;
+14 ; find the patient/study in ^RARPT using the Radiology Case Number
+15 ;
+16 SET X=$SELECT(CASENUMB'["-"!($LENGTH($TEXT(ACCFIND^RAAPI))=0):$$OLDCASE(CASENUMB,.LIST),1:$$ACCFIND^RAAPI(CASENUMB,.LIST))
+17 ; No Case
IF X'=1
QUIT "-1~NO CASE #"
+18 ;
+19 ; two conditions, no accession number & duplicate
SET X=LIST(1)
+20 SET RADPT1=$PIECE(X,"^",1)
SET RADPT2=$PIECE(X,"^",2)
SET RADPT3=$PIECE(X,"^",3)
+21 IF RADPT1=""!(RADPT2="")!(RADPT3="")
QUIT "-1~BAD CASE #"
+22 ;
+23 ; no patient demographics file pointer
IF '$DATA(^RADPT(RADPT1,0))
QUIT "-1~NO CASE #"
+24 ;
+25 ; get patient demographics file pointer
+26 SET X=^RADPT(RADPT1,0)
SET DFN=$PIECE(X,"^")
+27 SET SITE=$PIECE($GET(^RADPT(RADPT1,"DT",RADPT2,0)),"^",3)
+28 ;
+29 ; do not include cancelled exam
+30 ; P156 DAC - Fixed undefined error
SET EXAMSTS=$PIECE($GET(^RADPT(RADPT1,"DT",RADPT2,"P",RADPT3,0)),"^",3)
+31 IF EXAMSTS=""
QUIT "-1~BAD CASE #"
+32 SET EXAMSTS=$$GET1^DIQ(72,EXAMSTS,.01)
+33 IF EXAMSTS=""
QUIT "-1~BAD CASE #"
+34 IF EXAMSTS="CANCELLED"
QUIT "-1~NO CASE #"
+35 ;
+36 QUIT "0~"_DFN_"~"_SITE
+37 ;
CONLKUP(CASENUMB) ; CPRS Consult/Procedure patient/study lookup
+1 ;
+2 NEW DFN
+3 ;-- Exam status (don't post images to CANCELLED exams)
NEW EXAMSTS
+4 NEW GMRCIEN
+5 NEW SITE
+6 ;
+7 SET GMRCIEN=$$GMRCIEN^MAGDFCNV(CASENUMB)
+8 SET DFN=$$GET1^DIQ(123,GMRCIEN,.02,"I")
+9 ; no patient demographics file pointer
IF DFN=""
QUIT "-1~NO CASE #"
+10 SET SITE=$$GET1^DIQ(123,GMRCIEN,.05,"I")
+11 ; incomplete consult study
IF SITE=""
QUIT "-1~NO CASE #"
+12 ;
+13 ; check for cancelled exam
SET EXAMSTS=$$GET1^DIQ(123,GMRCIEN,8)
+14 IF EXAMSTS="CANCELLED"
QUIT "-1~NO CASE #"
+15 ;
+16 QUIT "0~"_DFN_"~"_SITE
+17 ;
OLDCASE(CASENUMB,LIST) ; Lookup case numbers using old method
+1 ;
+2 ; for Radiology Patch RA*5*7
SET RAIX=$SELECT($DATA(^RADPT("C")):"C",CASENUMB["-":"ADC",1:"AE")
+3 SET RADPT1=$ORDER(^RADPT(RAIX,CASENUMB,""))
IF 'RADPT1
QUIT 0
+4 SET RADPT2=$ORDER(^RADPT(RAIX,CASENUMB,RADPT1,""))
IF 'RADPT2
QUIT 0
+5 SET RADPT3=$ORDER(^RADPT(RAIX,CASENUMB,RADPT1,RADPT2,""))
IF 'RADPT3
QUIT 0
+6 SET LIST(1)=RADPT1_"^"_RADPT2_"^"_RADPT3
+7 ; Success
QUIT 1
+8 ;
+9 ;
LABLKUP(ACNUMB) ; Lab patient/study lookup - P138
+1 ;P307
NEW FMYEAR,LRAA,LRDFN,LRSS,IENS,YEAR,CASE,SITE,ABBR
+2 ;P307
SET ABBR=$PIECE(ACNUMB," ",1)
SET YEAR=$PIECE(ACNUMB," ",2)
SET CASE=$PIECE(ACNUMB," ",3)
+3 ; get lab area index ;P307
SET LRAA=$$FIND1^DIC(68,"","BX",ABBR,"","","ERR")
+4 SET FMYEAR="3"_YEAR_"0000"
+5 SET IENS=CASE_","_FMYEAR_","_LRAA
+6 ; lookup in ACCESSION file (#68)
+7 SET LRDFN=$$GET1^DIQ(68.02,IENS,.01)
+8 ; patient not in LAB DATA file (#63)
IF LRDFN=""
QUIT "-1~PATIENT NOT IN LAB FILE"
+9 SET SITE=$$GET1^DIQ(68.02,IENS,26,"I")
+10 ; patient not in PATIENT file (#2)
IF $$GET1^DIQ(68.02,IENS,1)'="PATIENT"
QUIT "-1~WRONG PATIENT"
+11 ; not right specimen
IF $$GET1^DIQ(68.02,IENS,15)'=CASENUMB
QUIT "-1~WRONG SPECIMEN"
+12 ; lookup in LAB DATA file (#63)
+13 ; patient not in PATIENT file (#2)
IF $$GET1^DIQ(63,LRDFN,.02)'="PATIENT"
QUIT "-1~PATIENT NOT ON FILE"
+14 SET DFN=$$GET1^DIQ(63,LRDFN,.03,"I")
+15 QUIT "0~"_DFN_"~"_SITE