GMRCUTL1 ;SLC/DCM,JFR,MA - General Utilities ;04/27/2017 15:23
;;3.0;CONSULT/REQUEST TRACKING;**1,4,12,15,21,17,28,89,96**;DEC 27, 1997;Build 21
; Added call to GMRCUTL2 for secondary printer
; This routine invokes IA #2876,3121
; Patch #21 added variable GMRCAUDT and moved line tag PRNTAUDT
; to GMRCP5A.
;
; ABV/SCR - 12/14/2017 added tag NEWUCID for patch number TBD to return the UniqueConsultID which is added to
; ORIGINAL records (records created through CPRS)
;
ACTM ;;Set correct variables to complete, discontinue, etc. a consult
K GMRCQUT
S:'+$G(GMRCA) GMRCA=$O(^GMR(123.1,"B",GMRCACTM,""))
S GMRCACTM=$P($G(^GMR(123.1,+GMRCA,0)),"^")
S ORSTS=$S(GMRCA:$P(^GMR(123.1,GMRCA,0),"^",2),1:0)
I 'GMRCA S GMRCQUT=1
Q
PRNT(SRVCIFN,GMRCO) ;print form 513 to a printer when new consult is entered
D PRNT^GMRCUTL2(SRVCIFN,GMRCO) ;89 call for secondary copy
N ORVP,GMRCDEV,GMRCQUED,IOP,%ZIS,POP,ZTDTH,ZTDESC,ZTIO,ZTRTN,ZTSK,GMRCAUDT
I '$G(SRVCIFN) S SRVCIFN=+$P(^GMR(123,GMRCO,0),U,5)
Q:'$D(^GMR(123.5,SRVCIFN,123)) Q:'$P(^GMR(123.5,SRVCIFN,123),"^",9)
S IOP="`"_$P(^GMR(123.5,SRVCIFN,123),"^",9)
S %ZIS="N" D ^%ZIS I POP S %ZIS=0 D HOME^%ZIS Q
S GMRCDEV=ION,GMRCQUED=1,GMRCAUDT=1
S ZTRTN="PRNT^GMRCP5A("_(+GMRCO)_","_(+$G(TIUFLG))_",1,"""_$G(GMRCCPY,"W")_""",0,"_(GMRCAUDT)_")"
S ZTDESC="CONSULT/REQUEST PACKAGE PRINT FORM 513 FOR NEW CONSULT"
S ZTIO=GMRCDEV,ZTDTH=$H
D ^%ZTLOAD
S %ZIS=0 D HOME^%ZIS
K GMRCQUED,GMRCDEV1
Q
END K GMRCDEV,GMRCDEV1,GMRCOREC,GMRCFMT
Q
PROVDX(OI) ;return PROV DX prompting info from 123.5
; Input:
; OI = ref to file 123.5("#;99CON") or file 123.3 (#;99PRC)
;
; Returns: string A^B
; A = O (optional), R (required) or S (suppress)
; B = F (free-text) or L (lexicon)
;
N GMRCFIL
Q:'+$G(OI) "^"
S GMRCFIL=$S(OI["99PRC":123.3,1:123.5)
Q:'$D(^GMR(GMRCFIL,+OI)) "^"
N STRING,NODE
I GMRCFIL=123.3 S NODE=$P(^GMR(123.3,+OI,0),U,7,8)
I GMRCFIL=123.5 S NODE=$P($G(^GMR(123.5,+OI,1)),U,1,2)
I NODE="" Q "O^F" ;values not set
S $P(STRING,U)=$S($L($P(NODE,U)):$P(NODE,U),1:"O")
S $P(STRING,U,2)=$S($L($P(NODE,U,2)):$P(NODE,U,2),1:"F")
Q STRING
ORIFN(GMRC123) ;return ORIFN associated with give record in ^GMR(123,
; GMRC123 = ien of consult record in file 123
Q $P($G(^GMR(123,GMRC123,0)),U,3)
GETDT(PROMPT,DEFAULT) ;prompt and return FM date
;Input:
; PROMPT = text of prompt - DIR("A") (optional)
; DEFAULT = default date to prompt - DIR("B") (optional)
;
;Output:
; FM date/time if successfully answered, "^" if exit or timeout
N DIR,DIRUT,DIROUT,DTOUT,DUOUT,X,Y
S DIR(0)="DA^::EPT"
S DIR("?")="Enter the date/time the activity took place."
S DIR("A")=$S($D(PROMPT):PROMPT_" ",1:"Actual Date/Time of Activity: ")
S DIR("B")=$S($D(DEFAULT):DEFAULT,1:"NOW")
D ^DIR
I $D(DUOUT)!($D(DTOUT)) S Y="^"
Q Y
;
DCPRNT(IEN,USER) ;reprint SF-513 on DC?
N SERV,REPR
S SERV=$P(^GMR(123,IEN,0),U,5) I 'SERV Q 0
S REPR=$P($G(^GMR(123.5,SERV,1)),U,5)
I 'REPR Q 1
I REPR=2 Q 0
I REPR=1,'$$VALID^GMRCAU(SERV,IEN,USER) Q 1
Q 0
;
PREREQ(GMRCARR,GMRCSRV,GMRCDFN,UNRESOLV) ; return service pre-requisite
; pre-requisite stored in 125 nodes in file 123.5 or 123.3
; GMRCARR = array to return containing pre-requisite
; GMRCSRV = ref to file 123.5 (ien;99CON) or 123.3 (ien;99PRC)
; GMRCDFN = patient identifier if to return resolved
; UNRESOLV = 1 or 0 ; if UNRESOLV=1 GMRCARR will be returned unresolved
Q:'+GMRCSRV
N GMRCFIL
S GMRCFIL=$S(GMRCSRV["99PRC":123.3,1:123.5)
Q:'$D(^GMR(GMRCFIL,+GMRCSRV,125))
I '$D(GMRCDFN)!($G(UNRESOLV)) D Q
. M @GMRCARR=^GMR(GMRCFIL,+GMRCSRV,125)
D BLRPLT^TIUSRVD(,,GMRCDFN,,$NA(^GMR(GMRCFIL,+GMRCSRV,125)))
I $D(^TMP("TIUBOIL",$J)) M @GMRCARR=^TMP("TIUBOIL",$J)
K ^TMP("TIUBOIL",$J)
Q
;
LOCKREC(GMRCDA) ;attempt to lock a consult record using order or record
; Input:
; GMRCDA = ien of consult record from file 123
;
; Output:
; 1 or 0^reason can't be locked
; 1 = successfully locked
; 0 = couldn't be locked
N GMRCORD,GMRCMSG
S GMRCORD=$P($G(^GMR(123,GMRCDA,0)),U,3)
I $G(GMRCORD) D ;an order associated
. S GMRCMSG=$$LOCK1^ORX2(GMRCORD)
. ; GMRCMSG=1 if locked or 0 if couldn't be locked
I $L($G(GMRCMSG)) Q GMRCMSG
; no order = Inter-facility Consult so lock consult record
L +^GMR(123,GMRCDA):5
I '$T Q "0^Another user is editing this record" ; couldn't lock it
Q 1
;
UNLKREC(GMRCDA) ;unlock a consult record
; Input:
; GMRCDA = ien of consult record from file 123
;
N GMRCORD
S GMRCORD=$P($G(^GMR(123,GMRCDA,0)),U,3)
I $G(GMRCORD) D Q
. D UNLK1^ORX2(GMRCORD)
L -^GMR(123,GMRCDA)
Q
;ABV/SCR 12/14/2017 added sub-routine to generate new field #80 - UCID for *96*
NEWUCID(GMRCIEN) ;return a string that uniquely identifies this record accross VistAs
; INPUT:
; GMRCIEN ien of consult/request record from file 123
;
N GMRCSTA,GMRCSTRN
;
;Validate the GMRCIEN exists
S GMRCSTRN=""
I $G(^GMR(123,$G(GMRCIEN),0))'="" D
.S GMRCSTA=$$GET^XPAR("PKG","GMRC UNIQUE CONSULT SITE ID",,"E") ;RETURNS THE EXTERNAL VALUE OF THE PARAMETER
.S:GMRCSTA GMRCSTRN=GMRCSTA_"_"_GMRCIEN
Q GMRCSTRN
;
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HGMRCUTL1 5274 printed Dec 13, 2024@01:47:45 Page 2
GMRCUTL1 ;SLC/DCM,JFR,MA - General Utilities ;04/27/2017 15:23
+1 ;;3.0;CONSULT/REQUEST TRACKING;**1,4,12,15,21,17,28,89,96**;DEC 27, 1997;Build 21
+2 ; Added call to GMRCUTL2 for secondary printer
+3 ; This routine invokes IA #2876,3121
+4 ; Patch #21 added variable GMRCAUDT and moved line tag PRNTAUDT
+5 ; to GMRCP5A.
+6 ;
+7 ; ABV/SCR - 12/14/2017 added tag NEWUCID for patch number TBD to return the UniqueConsultID which is added to
+8 ; ORIGINAL records (records created through CPRS)
+9 ;
ACTM ;;Set correct variables to complete, discontinue, etc. a consult
+1 KILL GMRCQUT
+2 if '+$GET(GMRCA)
SET GMRCA=$ORDER(^GMR(123.1,"B",GMRCACTM,""))
+3 SET GMRCACTM=$PIECE($GET(^GMR(123.1,+GMRCA,0)),"^")
+4 SET ORSTS=$SELECT(GMRCA:$PIECE(^GMR(123.1,GMRCA,0),"^",2),1:0)
+5 IF 'GMRCA
SET GMRCQUT=1
+6 QUIT
PRNT(SRVCIFN,GMRCO) ;print form 513 to a printer when new consult is entered
+1 ;89 call for secondary copy
DO PRNT^GMRCUTL2(SRVCIFN,GMRCO)
+2 NEW ORVP,GMRCDEV,GMRCQUED,IOP,%ZIS,POP,ZTDTH,ZTDESC,ZTIO,ZTRTN,ZTSK,GMRCAUDT
+3 IF '$GET(SRVCIFN)
SET SRVCIFN=+$PIECE(^GMR(123,GMRCO,0),U,5)
+4 if '$DATA(^GMR(123.5,SRVCIFN,123))
QUIT
if '$PIECE(^GMR(123.5,SRVCIFN,123),"^",9)
QUIT
+5 SET IOP="`"_$PIECE(^GMR(123.5,SRVCIFN,123),"^",9)
+6 SET %ZIS="N"
DO ^%ZIS
IF POP
SET %ZIS=0
DO HOME^%ZIS
QUIT
+7 SET GMRCDEV=ION
SET GMRCQUED=1
SET GMRCAUDT=1
+8 SET ZTRTN="PRNT^GMRCP5A("_(+GMRCO)_","_(+$GET(TIUFLG))_",1,"""_$GET(GMRCCPY,"W")_""",0,"_(GMRCAUDT)_")"
+9 SET ZTDESC="CONSULT/REQUEST PACKAGE PRINT FORM 513 FOR NEW CONSULT"
+10 SET ZTIO=GMRCDEV
SET ZTDTH=$HOROLOG
+11 DO ^%ZTLOAD
+12 SET %ZIS=0
DO HOME^%ZIS
+13 KILL GMRCQUED,GMRCDEV1
+14 QUIT
END KILL GMRCDEV,GMRCDEV1,GMRCOREC,GMRCFMT
+1 QUIT
PROVDX(OI) ;return PROV DX prompting info from 123.5
+1 ; Input:
+2 ; OI = ref to file 123.5("#;99CON") or file 123.3 (#;99PRC)
+3 ;
+4 ; Returns: string A^B
+5 ; A = O (optional), R (required) or S (suppress)
+6 ; B = F (free-text) or L (lexicon)
+7 ;
+8 NEW GMRCFIL
+9 if '+$GET(OI)
QUIT "^"
+10 SET GMRCFIL=$SELECT(OI["99PRC":123.3,1:123.5)
+11 if '$DATA(^GMR(GMRCFIL,+OI))
QUIT "^"
+12 NEW STRING,NODE
+13 IF GMRCFIL=123.3
SET NODE=$PIECE(^GMR(123.3,+OI,0),U,7,8)
+14 IF GMRCFIL=123.5
SET NODE=$PIECE($GET(^GMR(123.5,+OI,1)),U,1,2)
+15 ;values not set
IF NODE=""
QUIT "O^F"
+16 SET $PIECE(STRING,U)=$SELECT($LENGTH($PIECE(NODE,U)):$PIECE(NODE,U),1:"O")
+17 SET $PIECE(STRING,U,2)=$SELECT($LENGTH($PIECE(NODE,U,2)):$PIECE(NODE,U,2),1:"F")
+18 QUIT STRING
ORIFN(GMRC123) ;return ORIFN associated with give record in ^GMR(123,
+1 ; GMRC123 = ien of consult record in file 123
+2 QUIT $PIECE($GET(^GMR(123,GMRC123,0)),U,3)
GETDT(PROMPT,DEFAULT) ;prompt and return FM date
+1 ;Input:
+2 ; PROMPT = text of prompt - DIR("A") (optional)
+3 ; DEFAULT = default date to prompt - DIR("B") (optional)
+4 ;
+5 ;Output:
+6 ; FM date/time if successfully answered, "^" if exit or timeout
+7 NEW DIR,DIRUT,DIROUT,DTOUT,DUOUT,X,Y
+8 SET DIR(0)="DA^::EPT"
+9 SET DIR("?")="Enter the date/time the activity took place."
+10 SET DIR("A")=$SELECT($DATA(PROMPT):PROMPT_" ",1:"Actual Date/Time of Activity: ")
+11 SET DIR("B")=$SELECT($DATA(DEFAULT):DEFAULT,1:"NOW")
+12 DO ^DIR
+13 IF $DATA(DUOUT)!($DATA(DTOUT))
SET Y="^"
+14 QUIT Y
+15 ;
DCPRNT(IEN,USER) ;reprint SF-513 on DC?
+1 NEW SERV,REPR
+2 SET SERV=$PIECE(^GMR(123,IEN,0),U,5)
IF 'SERV
QUIT 0
+3 SET REPR=$PIECE($GET(^GMR(123.5,SERV,1)),U,5)
+4 IF 'REPR
QUIT 1
+5 IF REPR=2
QUIT 0
+6 IF REPR=1
IF '$$VALID^GMRCAU(SERV,IEN,USER)
QUIT 1
+7 QUIT 0
+8 ;
PREREQ(GMRCARR,GMRCSRV,GMRCDFN,UNRESOLV) ; return service pre-requisite
+1 ; pre-requisite stored in 125 nodes in file 123.5 or 123.3
+2 ; GMRCARR = array to return containing pre-requisite
+3 ; GMRCSRV = ref to file 123.5 (ien;99CON) or 123.3 (ien;99PRC)
+4 ; GMRCDFN = patient identifier if to return resolved
+5 ; UNRESOLV = 1 or 0 ; if UNRESOLV=1 GMRCARR will be returned unresolved
+6 if '+GMRCSRV
QUIT
+7 NEW GMRCFIL
+8 SET GMRCFIL=$SELECT(GMRCSRV["99PRC":123.3,1:123.5)
+9 if '$DATA(^GMR(GMRCFIL,+GMRCSRV,125))
QUIT
+10 IF '$DATA(GMRCDFN)!($GET(UNRESOLV))
Begin DoDot:1
+11 MERGE @GMRCARR=^GMR(GMRCFIL,+GMRCSRV,125)
End DoDot:1
QUIT
+12 DO BLRPLT^TIUSRVD(,,GMRCDFN,,$NAME(^GMR(GMRCFIL,+GMRCSRV,125)))
+13 IF $DATA(^TMP("TIUBOIL",$JOB))
MERGE @GMRCARR=^TMP("TIUBOIL",$JOB)
+14 KILL ^TMP("TIUBOIL",$JOB)
+15 QUIT
+16 ;
LOCKREC(GMRCDA) ;attempt to lock a consult record using order or record
+1 ; Input:
+2 ; GMRCDA = ien of consult record from file 123
+3 ;
+4 ; Output:
+5 ; 1 or 0^reason can't be locked
+6 ; 1 = successfully locked
+7 ; 0 = couldn't be locked
+8 NEW GMRCORD,GMRCMSG
+9 SET GMRCORD=$PIECE($GET(^GMR(123,GMRCDA,0)),U,3)
+10 ;an order associated
IF $GET(GMRCORD)
Begin DoDot:1
+11 SET GMRCMSG=$$LOCK1^ORX2(GMRCORD)
+12 ; GMRCMSG=1 if locked or 0 if couldn't be locked
End DoDot:1
+13 IF $LENGTH($GET(GMRCMSG))
QUIT GMRCMSG
+14 ; no order = Inter-facility Consult so lock consult record
+15 LOCK +^GMR(123,GMRCDA):5
+16 ; couldn't lock it
IF '$TEST
QUIT "0^Another user is editing this record"
+17 QUIT 1
+18 ;
UNLKREC(GMRCDA) ;unlock a consult record
+1 ; Input:
+2 ; GMRCDA = ien of consult record from file 123
+3 ;
+4 NEW GMRCORD
+5 SET GMRCORD=$PIECE($GET(^GMR(123,GMRCDA,0)),U,3)
+6 IF $GET(GMRCORD)
Begin DoDot:1
+7 DO UNLK1^ORX2(GMRCORD)
End DoDot:1
QUIT
+8 LOCK -^GMR(123,GMRCDA)
+9 QUIT
+10 ;ABV/SCR 12/14/2017 added sub-routine to generate new field #80 - UCID for *96*
NEWUCID(GMRCIEN) ;return a string that uniquely identifies this record accross VistAs
+1 ; INPUT:
+2 ; GMRCIEN ien of consult/request record from file 123
+3 ;
+4 NEW GMRCSTA,GMRCSTRN
+5 ;
+6 ;Validate the GMRCIEN exists
+7 SET GMRCSTRN=""
+8 IF $GET(^GMR(123,$GET(GMRCIEN),0))'=""
Begin DoDot:1
+9 ;RETURNS THE EXTERNAL VALUE OF THE PARAMETER
SET GMRCSTA=$$GET^XPAR("PKG","GMRC UNIQUE CONSULT SITE ID",,"E")
+10 if GMRCSTA
SET GMRCSTRN=GMRCSTA_"_"_GMRCIEN
End DoDot:1
+11 QUIT GMRCSTRN
+12 ;