GMTSRAD ; SLC/JER,KER HIN/GJC - Radiology Request Status ; 08/27/2002
;;2.7;Health Summary;**14,28,56**;Oct 20, 1995
;
; External References
; DBIA 3125 ^RADPT(
; DBIA 3125 ^RADPT("AO"
; DBIA 504 ^RAO(75.1
; DBIA 2056 $$GET1^DIQ (file 72)
; DBIA 2056 GETS^DIQ (file 70.03)
; DBIA 10015 EN^DIQ1 (file 75.1)
; DBIA 10104 $$LOW^XLFSTR
;
ENRAD ; Entry Point for HS only
N MAX K ^TMP("GMTSRAD",$J)
S MAX=$S(+$G(GMTSNDM)>0:GMTSNDM,1:99999)
Q:'$D(^RAO(75.1,"AS",DFN)) D GET
Q:'$D(^TMP("GMTSRAD",$J)) D LOOP
K ^TMP("GMTSRAD",$J)
Q
GET ; Extract radiology orders
N DA,DIC,DIQ,DR,GMI,GMOUT,GMP,GMRDT,GMSTAT,GMPRC,GMSDT,GMDOC S GMI=0
F S GMI=$O(^RAO(75.1,"AS",DFN,GMI)) Q:+GMI'>0!+$G(GMOUT) D
. S DA=0 F S DA=$O(^RAO(75.1,"AS",DFN,GMI,DA)) Q:+DA'>0!+$G(GMOUT) D
. . N GMORD
. . S DIC="^RAO(75.1,",DIQ="GMORD(",DIQ(0)="IE",DR="2;5;14;16;23"
. . D EN^DIQ1
. . S GMRDT=$G(GMORD(75.1,DA,16,"I")),GMSTAT=$G(GMORD(75.1,DA,5,"E"))
. . I $S(GMRDT>GMTSEND:1,GMRDT<GMTSBEG:1,1:0) Q
. . S GMPRC=$G(GMORD(75.1,DA,2,"E")),GMP=$G(GMORD(75.1,DA,2,"I"))
. . S GMSDT=$G(GMORD(75.1,DA,23,"I")),GMDOC=$E($G(GMORD(75.1,DA,14,"E")),1,14)
. . I $L(GMPRC)>24 S GMPRC=$$WRAP^GMTSORC(GMPRC,24)
. . S GMSTAT=$E($$LOW^XLFSTR(GMSTAT))
. . S ^TMP("GMTSRAD",$J,9999999-GMRDT,DA,+GMP,0)=""
. . S ^TMP("GMTSRAD",$J,9999999-GMRDT,DA,+GMP)=GMRDT_U_GMSTAT_U_GMPRC_U_GMSDT_U_GMDOC
. . D REG(DA,GMP)
Q
HDR ; Write column header
D CKP^GMTSUP Q:$D(GMTSQIT) W "Req DT",?11,"Status",?22,"Procedure",?48,"Scheduled DT",?66,"Provider",!
D CKP^GMTSUP Q:$D(GMTSQIT) W !
Q
LOOP ; Loops through ^TMP("GMTSRAD",$J,
N GMCNT,GMI,GMORD,GMRDT,GMREC S (GMCNT,GMRDT)=0
D HDR
F S GMRDT=$O(^TMP("GMTSRAD",$J,GMRDT)) Q:+GMRDT'>0!(GMCNT=MAX) D
. S GMORD=0
. F S GMORD=$O(^TMP("GMTSRAD",$J,GMRDT,GMORD)) Q:+GMORD'>0!(GMCNT=MAX) D
. . S GMI=0
. . F S GMI=$O(^TMP("GMTSRAD",$J,GMRDT,GMORD,GMI)) Q:+GMI'>0!(GMCNT=MAX) D
. . . S GMREC(0)=$G(^TMP("GMTSRAD",$J,GMRDT,GMORD,GMI,0))
. . . S GMREC=$G(^TMP("GMTSRAD",$J,GMRDT,GMORD,GMI)),GMCNT=GMCNT+1 D WRT
Q
WRT ; Write record
N GMII,GMRDT1,GMSTAT,GMPRC,GMSDT,GMDOC,GMPRO,X
S X=+GMREC D REGDT4^GMTSU S GMRDT1=X,GMSTAT=$P(GMREC,U,2)
S GMPRC=$P(GMREC,U,3)
S X=$P(GMREC,U,4) D REGDTM4^GMTSU S GMSDT=X,GMDOC=$P(GMREC,U,5)
D CKP^GMTSUP Q:$D(GMTSQIT) D
. I GMTSNPG D HDR
. W GMRDT1,?13,GMSTAT W:+$G(GMREC(0)) ?17,"Ord: "
. W ?22,$P(GMPRC,"|"),?48,GMSDT,?66,GMDOC,!
F GMII=2:1:$L(GMPRC,"|") D
. D CKP^GMTSUP Q:$D(GMTSQIT) D:GMTSNPG HDR W ?22,$P(GMPRC,"|",GMII),!
I +$G(GMREC(0)) D
. D CKP^GMTSUP Q:$D(GMTSQIT) D:GMTSNPG HDR
. S GMRCNT=0 W ?13,"Actual: "
. F S GMRCNT=$O(^TMP("GMTSRAD",$J,GMRDT,GMORD,GMI,GMRCNT)) Q:GMRCNT'>0 D
.. S GMPRO=$G(^TMP("GMTSRAD",$J,GMRDT,GMORD,GMI,GMRCNT))
.. D CKP^GMTSUP Q:$D(GMTSQIT) W ?21,$P(GMPRO,"|"),!
.. F GMII=2:1:$L(GMPRO,"|") D
... D CKP^GMTSUP Q:$D(GMTSQIT) D:GMTSNPG HDR W ?22,$P(GMPRO,"|",GMII),!
... Q
.. Q
. Q
Q
;
REG(DA,GMP) ; Registered Order Parent/Differs
;
; If the order has been registered, check to see if the
; procedure ordered is a parent or if the ordered procedure
; differs from the registered procedure.
;
; Input: DA -> ien of the order in file 75.1
; : GMP -> ien of the ordered procedure
Q:'$D(^RADPT("AO",DA))
N GMCNI,GMDFN,GMDTI,GMREG,GMRCNT,GMY2 S GMRCNT=0
S GMDFN=+$O(^RADPT("AO",DA,0)) Q:'GMDFN
S GMDTI=+$O(^RADPT("AO",DA,GMDFN,0)) Q:'GMDTI
S GMY2=$G(^RADPT(GMDFN,"DT",GMDTI,0))
I '$P(GMY2,"^",5) D Q
. S GMCNI=+$O(^RADPT("AO",DA,GMDFN,GMDTI,0)) Q:GMCNI'>0
. D REG1(DA,GMDFN,GMDTI,GMCNI,GMP)
. Q
S GMCNI=0
F S GMCNI=$O(^RADPT(GMDFN,"DT",GMDTI,"P",GMCNI)) Q:GMCNI'>0 D
. D REG1(DA,GMDFN,GMDTI,GMCNI,GMP)
. Q
Q
;
REG1(DA,GMDFN,GMDTI,GMCNI,GMP) ; Registered Order Differs
;
; Check if the ordered procedure differs from
; the registered procedure.
;
; Input: DA -> Order (75.1) ien
; GMDFN -> ien of the patient
; GMDTI -> inv. date/time of exam
; GMCNI -> ien of each case
; GMP -> ien of the procedure for the order
;
; Sets: ^TMP("GMTSRAD",$J,inv Req Entered Date/Time,
; order ien,proc ien,
;
; 0)=1 if one of the following conditions exist:
; 1) the procedure ordered is not the procedure
; registered (exam not cancelled)
; 2) the ordered procedure is a parent and the
; descendent procedure(s) have been registered
; (exam not cancelled)
;
; Sets: ^TMP("GMTSRAD",$J,inv Req Entered Date/Time,
; order ien,proc ien,seq #)=Registered Procedure
N GMIEN,GMPRO,GMREG S GMRCNT=GMRCNT+1
S GMIEN=GMCNI_","_GMDTI_","_GMDFN_","
D GETS^DIQ(70.03,GMIEN,"2;3","IE","GMREG")
S GMPRO=GMREG(70.03,GMIEN,2,"E")
Q:GMPRO=""
Q:GMREG(70.03,GMIEN,3,"I")=""
Q:$$GET1^DIQ(72,GMREG(70.03,GMIEN,3,"I"),3,"I")=0
Q:GMP=GMREG(70.03,GMIEN,2,"I")
S ^TMP("GMTSRAD",$J,9999999-GMRDT,DA,+GMP,0)=1
S:$L(GMPRO)>24 GMPRO=$$WRAP^GMTSORC(GMPRO,24)
S ^TMP("GMTSRAD",$J,9999999-GMRDT,DA,+GMP,GMRCNT)=GMPRO
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMTSRAD 5329 printed Oct 16, 2024@18:00:44 Page 2
GMTSRAD ; SLC/JER,KER HIN/GJC - Radiology Request Status ; 08/27/2002
+1 ;;2.7;Health Summary;**14,28,56**;Oct 20, 1995
+2 ;
+3 ; External References
+4 ; DBIA 3125 ^RADPT(
+5 ; DBIA 3125 ^RADPT("AO"
+6 ; DBIA 504 ^RAO(75.1
+7 ; DBIA 2056 $$GET1^DIQ (file 72)
+8 ; DBIA 2056 GETS^DIQ (file 70.03)
+9 ; DBIA 10015 EN^DIQ1 (file 75.1)
+10 ; DBIA 10104 $$LOW^XLFSTR
+11 ;
ENRAD ; Entry Point for HS only
+1 NEW MAX
KILL ^TMP("GMTSRAD",$JOB)
+2 SET MAX=$SELECT(+$GET(GMTSNDM)>0:GMTSNDM,1:99999)
+3 if '$DATA(^RAO(75.1,"AS",DFN))
QUIT
DO GET
+4 if '$DATA(^TMP("GMTSRAD",$JOB))
QUIT
DO LOOP
+5 KILL ^TMP("GMTSRAD",$JOB)
+6 QUIT
GET ; Extract radiology orders
+1 NEW DA,DIC,DIQ,DR,GMI,GMOUT,GMP,GMRDT,GMSTAT,GMPRC,GMSDT,GMDOC
SET GMI=0
+2 FOR
SET GMI=$ORDER(^RAO(75.1,"AS",DFN,GMI))
if +GMI'>0!+$GET(GMOUT)
QUIT
Begin DoDot:1
+3 SET DA=0
FOR
SET DA=$ORDER(^RAO(75.1,"AS",DFN,GMI,DA))
if +DA'>0!+$GET(GMOUT)
QUIT
Begin DoDot:2
+4 NEW GMORD
+5 SET DIC="^RAO(75.1,"
SET DIQ="GMORD("
SET DIQ(0)="IE"
SET DR="2;5;14;16;23"
+6 DO EN^DIQ1
+7 SET GMRDT=$GET(GMORD(75.1,DA,16,"I"))
SET GMSTAT=$GET(GMORD(75.1,DA,5,"E"))
+8 IF $SELECT(GMRDT>GMTSEND:1,GMRDT<GMTSBEG:1,1:0)
QUIT
+9 SET GMPRC=$GET(GMORD(75.1,DA,2,"E"))
SET GMP=$GET(GMORD(75.1,DA,2,"I"))
+10 SET GMSDT=$GET(GMORD(75.1,DA,23,"I"))
SET GMDOC=$EXTRACT($GET(GMORD(75.1,DA,14,"E")),1,14)
+11 IF $LENGTH(GMPRC)>24
SET GMPRC=$$WRAP^GMTSORC(GMPRC,24)
+12 SET GMSTAT=$EXTRACT($$LOW^XLFSTR(GMSTAT))
+13 SET ^TMP("GMTSRAD",$JOB,9999999-GMRDT,DA,+GMP,0)=""
+14 SET ^TMP("GMTSRAD",$JOB,9999999-GMRDT,DA,+GMP)=GMRDT_U_GMSTAT_U_GMPRC_U_GMSDT_U_GMDOC
+15 DO REG(DA,GMP)
End DoDot:2
End DoDot:1
+16 QUIT
HDR ; Write column header
+1 DO CKP^GMTSUP
if $DATA(GMTSQIT)
QUIT
WRITE "Req DT",?11,"Status",?22,"Procedure",?48,"Scheduled DT",?66,"Provider",!
+2 DO CKP^GMTSUP
if $DATA(GMTSQIT)
QUIT
WRITE !
+3 QUIT
LOOP ; Loops through ^TMP("GMTSRAD",$J,
+1 NEW GMCNT,GMI,GMORD,GMRDT,GMREC
SET (GMCNT,GMRDT)=0
+2 DO HDR
+3 FOR
SET GMRDT=$ORDER(^TMP("GMTSRAD",$JOB,GMRDT))
if +GMRDT'>0!(GMCNT=MAX)
QUIT
Begin DoDot:1
+4 SET GMORD=0
+5 FOR
SET GMORD=$ORDER(^TMP("GMTSRAD",$JOB,GMRDT,GMORD))
if +GMORD'>0!(GMCNT=MAX)
QUIT
Begin DoDot:2
+6 SET GMI=0
+7 FOR
SET GMI=$ORDER(^TMP("GMTSRAD",$JOB,GMRDT,GMORD,GMI))
if +GMI'>0!(GMCNT=MAX)
QUIT
Begin DoDot:3
+8 SET GMREC(0)=$GET(^TMP("GMTSRAD",$JOB,GMRDT,GMORD,GMI,0))
+9 SET GMREC=$GET(^TMP("GMTSRAD",$JOB,GMRDT,GMORD,GMI))
SET GMCNT=GMCNT+1
DO WRT
End DoDot:3
End DoDot:2
End DoDot:1
+10 QUIT
WRT ; Write record
+1 NEW GMII,GMRDT1,GMSTAT,GMPRC,GMSDT,GMDOC,GMPRO,X
+2 SET X=+GMREC
DO REGDT4^GMTSU
SET GMRDT1=X
SET GMSTAT=$PIECE(GMREC,U,2)
+3 SET GMPRC=$PIECE(GMREC,U,3)
+4 SET X=$PIECE(GMREC,U,4)
DO REGDTM4^GMTSU
SET GMSDT=X
SET GMDOC=$PIECE(GMREC,U,5)
+5 DO CKP^GMTSUP
if $DATA(GMTSQIT)
QUIT
Begin DoDot:1
+6 IF GMTSNPG
DO HDR
+7 WRITE GMRDT1,?13,GMSTAT
if +$GET(GMREC(0))
WRITE ?17,"Ord: "
+8 WRITE ?22,$PIECE(GMPRC,"|"),?48,GMSDT,?66,GMDOC,!
End DoDot:1
+9 FOR GMII=2:1:$LENGTH(GMPRC,"|")
Begin DoDot:1
+10 DO CKP^GMTSUP
if $DATA(GMTSQIT)
QUIT
if GMTSNPG
DO HDR
WRITE ?22,$PIECE(GMPRC,"|",GMII),!
End DoDot:1
+11 IF +$GET(GMREC(0))
Begin DoDot:1
+12 DO CKP^GMTSUP
if $DATA(GMTSQIT)
QUIT
if GMTSNPG
DO HDR
+13 SET GMRCNT=0
WRITE ?13,"Actual: "
+14 FOR
SET GMRCNT=$ORDER(^TMP("GMTSRAD",$JOB,GMRDT,GMORD,GMI,GMRCNT))
if GMRCNT'>0
QUIT
Begin DoDot:2
+15 SET GMPRO=$GET(^TMP("GMTSRAD",$JOB,GMRDT,GMORD,GMI,GMRCNT))
+16 DO CKP^GMTSUP
if $DATA(GMTSQIT)
QUIT
WRITE ?21,$PIECE(GMPRO,"|"),!
+17 FOR GMII=2:1:$LENGTH(GMPRO,"|")
Begin DoDot:3
+18 DO CKP^GMTSUP
if $DATA(GMTSQIT)
QUIT
if GMTSNPG
DO HDR
WRITE ?22,$PIECE(GMPRO,"|",GMII),!
+19 QUIT
End DoDot:3
+20 QUIT
End DoDot:2
+21 QUIT
End DoDot:1
+22 QUIT
+23 ;
REG(DA,GMP) ; Registered Order Parent/Differs
+1 ;
+2 ; If the order has been registered, check to see if the
+3 ; procedure ordered is a parent or if the ordered procedure
+4 ; differs from the registered procedure.
+5 ;
+6 ; Input: DA -> ien of the order in file 75.1
+7 ; : GMP -> ien of the ordered procedure
+8 if '$DATA(^RADPT("AO",DA))
QUIT
+9 NEW GMCNI,GMDFN,GMDTI,GMREG,GMRCNT,GMY2
SET GMRCNT=0
+10 SET GMDFN=+$ORDER(^RADPT("AO",DA,0))
if 'GMDFN
QUIT
+11 SET GMDTI=+$ORDER(^RADPT("AO",DA,GMDFN,0))
if 'GMDTI
QUIT
+12 SET GMY2=$GET(^RADPT(GMDFN,"DT",GMDTI,0))
+13 IF '$PIECE(GMY2,"^",5)
Begin DoDot:1
+14 SET GMCNI=+$ORDER(^RADPT("AO",DA,GMDFN,GMDTI,0))
if GMCNI'>0
QUIT
+15 DO REG1(DA,GMDFN,GMDTI,GMCNI,GMP)
+16 QUIT
End DoDot:1
QUIT
+17 SET GMCNI=0
+18 FOR
SET GMCNI=$ORDER(^RADPT(GMDFN,"DT",GMDTI,"P",GMCNI))
if GMCNI'>0
QUIT
Begin DoDot:1
+19 DO REG1(DA,GMDFN,GMDTI,GMCNI,GMP)
+20 QUIT
End DoDot:1
+21 QUIT
+22 ;
REG1(DA,GMDFN,GMDTI,GMCNI,GMP) ; Registered Order Differs
+1 ;
+2 ; Check if the ordered procedure differs from
+3 ; the registered procedure.
+4 ;
+5 ; Input: DA -> Order (75.1) ien
+6 ; GMDFN -> ien of the patient
+7 ; GMDTI -> inv. date/time of exam
+8 ; GMCNI -> ien of each case
+9 ; GMP -> ien of the procedure for the order
+10 ;
+11 ; Sets: ^TMP("GMTSRAD",$J,inv Req Entered Date/Time,
+12 ; order ien,proc ien,
+13 ;
+14 ; 0)=1 if one of the following conditions exist:
+15 ; 1) the procedure ordered is not the procedure
+16 ; registered (exam not cancelled)
+17 ; 2) the ordered procedure is a parent and the
+18 ; descendent procedure(s) have been registered
+19 ; (exam not cancelled)
+20 ;
+21 ; Sets: ^TMP("GMTSRAD",$J,inv Req Entered Date/Time,
+22 ; order ien,proc ien,seq #)=Registered Procedure
+23 NEW GMIEN,GMPRO,GMREG
SET GMRCNT=GMRCNT+1
+24 SET GMIEN=GMCNI_","_GMDTI_","_GMDFN_","
+25 DO GETS^DIQ(70.03,GMIEN,"2;3","IE","GMREG")
+26 SET GMPRO=GMREG(70.03,GMIEN,2,"E")
+27 if GMPRO=""
QUIT
+28 if GMREG(70.03,GMIEN,3,"I")=""
QUIT
+29 if $$GET1^DIQ(72,GMREG(70.03,GMIEN,3,"I"),3,"I")=0
QUIT
+30 if GMP=GMREG(70.03,GMIEN,2,"I")
QUIT
+31 SET ^TMP("GMTSRAD",$JOB,9999999-GMRDT,DA,+GMP,0)=1
+32 if $LENGTH(GMPRO)>24
SET GMPRO=$$WRAP^GMTSORC(GMPRO,24)
+33 SET ^TMP("GMTSRAD",$JOB,9999999-GMRDT,DA,+GMP,GMRCNT)=GMPRO
+34 QUIT