VAQREQ10 ;ALB/JFP - REQUEST PDX RECORD, PROMPT PATIENT;01MAR93
;;1.5;PATIENT DATA EXCHANGE;**25**;NOV 17, 1993
; -- Entry Points
REQ D KILL^XUSCLEAN S VAQOPT="REQ" G INIT
UNS D KILL^XUSCLEAN S VAQOPT="UNS" G INIT
QUIT
INIT ; -- Intialization
D ^VAQUTL98
N POP,TASK,DFN
S:'$D(VAQOPT) VAQOPT="" ; -- should be set from entry point
;
MAIN ; -- Main entry point
K VAQDFN,VAQIN,VAQNM,VAQISSN,VAQESSN,VAQIDOB,VAQEDOB,VAQIELG,VAQEELG
K VAQAUSIT,VAQDOM,VAQDZ,VAQNOTI,VAQPID,VAQRQADD,VAQRQDT,VAQRQSIT
K VAQTRN,VAQDZN,VAQPR,DFN
S POP=0
;
; -- Call to Dir to request patient from patient file (2)
S DIR("A")="Select Patient Name: "
S DIR(0)="FAO^1:30^S X=$$UP^XLFSTR(X) K:(X'=$C(32)&($L(X)<1)) X"
S DIR("?")="Enter Patient's Name (Last,First Middle) or SSN"
W !! D ^DIR K DIR G:$D(DIRUT) EXIT
S VAQIN=$$UP^XLFSTR(Y)
;
; -- Function call to get patient DFN (DIC)
S TASK=$D(ZTSK) ; -- task = 1 (batch), task = 0 interactive
D:$D(XRTL) T0^%ZOSV ; -- Capacity start
S VAQDFN=$$GETDFN^VAQUTL97(VAQIN,TASK)
S:$D(XRT0) XRTN=$T(+0) D:$D(XRT0) T1^%ZOSV ; -- Capacity stop
D:VAQDFN=-1 MANUAL ; -- not in patient file (manual request)
G:POP MLOOP
D:VAQDFN>0 VADPT ; -- pulls off MAS data
D EP^VAQREQ01 ; -- Call to list processor (status screen)
MLOOP G MAIN ; -- loop back until no more patient added
;
EXIT ; -- Cleanup and exit routine
K POP,TASK,DFN
K DIROUT,DIRUT,DTOUT,DUOUT,X,Y,BADSSN
K VAQDFN,VAQIN,VAQNM,VAQISSN,VAQESSN,VAQIDOB,VAQEDOB,VAQIELG,VAQEELG
K VAQAUSIT,VAQDOM,VAQDZ,VAQNOTI,VAQPID,VAQOPT,VAQRQADD,VAQRQDT,VAQRQSIT
K VAQTRN,VAQDZN,VAQPR
QUIT
;
MANUAL ; -- Gets Patient name SSN AND DOB if patient not found local PT file
; -- Don't allow manual entry of unsolicited request
I VAQOPT="UNS" W !!,"An unsolicited PDX request requires an entry from the patient file...",!,"Press any key to continue: " S POP=1 R X:DTIME QUIT
;
; -- Request data
S VAQEELG="Not Available"
W !,$C(7)
S DIR(0)="Y"
S DIR("A")=VAQIN_" not found in local patient file... Request PDX"
S DIR("B")="YES"
S DIR("?")="You will be required to enter the needed information."
S DIR("?",1)="Enter 'YES' to request a PDX for a patient not in your Patient File."
D ^DIR K DIR I $D(DIRUT)!('Y) S POP=1 QUIT
;
; -- Request patient name
S DIR(0)="FAO^3:30^S X=$$UP^XLFSTR(X) K:(X?1P.E)!(X'?1U.ANP)!(X'["","") X"
S DIR("A")=" Patient name : "
S DIR("B")=VAQIN
S DIR("?")="Enter patient's name in uppercase (LAST,FIRST MIDDLE)"
S DIR("??")="^D PAT^VAQREQ09"
D ^DIR K DIR I $D(DUOUT)!$D(DTOUT) S POP=1 QUIT
S VAQNM=$$UP^XLFSTR(Y)
;
; -- Request pt SSN
S DIR(0)="FAO^9:10^K:(X'?9N)&(X'?9N1""P"")!($D(BADSSN(X))) X"
S DIR("A")=" SSN : "
S DIR("?")="Enter patient's SSN (without dashes)"
D ^DIR K DIR I $D(DUOUT)!$D(DTOUT) S POP=1 QUIT
S VAQISSN=Y,VAQESSN=$$DASHSSN^VAQUTL99(Y)
;
; -- Checks for name or ssn required
I (VAQNM="")&(VAQISSN="") W !!,"Patient name or SSN is required...Press any key to continue: " S POP=1 R X:DTIME QUIT
;
; -- Request pt DOB
S DIR(0)="DAO^::EP"
S DIR("A")=" DATE OF BIRTH : "
S DIR("?")="Enter patient's date of birth"
D ^DIR K DIR I $D(DUOUT)!$D(DTOUT) S POP=1 QUIT
S VAQIDOB=Y,VAQEDOB=$$DOBFMT^VAQUTL99(Y)
QUIT
;
VADPT ; -- Pulls off patient demographics, for DFN
; -- Gets name,ssn,dob
S DFN=$P(VAQDFN,U,1)
D DEM^VADPT,ELIG^VADPT
S VAQNM=VADM(1)
S VAQISSN=$P(VADM(2),U,1),VAQESSN=$P(VADM(2),U,2)
S VAQIDOB=$P(VADM(3),U,1),VAQEDOB=$P(VADM(3),U,2)
S VAQIELG=$P(VAEL(6),U,1),VAQEELG=$P(VAEL(6),U,2)
K VADM,VAEL,VAERR,VA
QUIT
;
END ; -- End of code
QUIT
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HVAQREQ10 3625 printed Nov 22, 2024@17:36:52 Page 2
VAQREQ10 ;ALB/JFP - REQUEST PDX RECORD, PROMPT PATIENT;01MAR93
+1 ;;1.5;PATIENT DATA EXCHANGE;**25**;NOV 17, 1993
+2 ; -- Entry Points
REQ DO KILL^XUSCLEAN
SET VAQOPT="REQ"
GOTO INIT
UNS DO KILL^XUSCLEAN
SET VAQOPT="UNS"
GOTO INIT
+1 QUIT
INIT ; -- Intialization
+1 DO ^VAQUTL98
+2 NEW POP,TASK,DFN
+3 ; -- should be set from entry point
if '$DATA(VAQOPT)
SET VAQOPT=""
+4 ;
MAIN ; -- Main entry point
+1 KILL VAQDFN,VAQIN,VAQNM,VAQISSN,VAQESSN,VAQIDOB,VAQEDOB,VAQIELG,VAQEELG
+2 KILL VAQAUSIT,VAQDOM,VAQDZ,VAQNOTI,VAQPID,VAQRQADD,VAQRQDT,VAQRQSIT
+3 KILL VAQTRN,VAQDZN,VAQPR,DFN
+4 SET POP=0
+5 ;
+6 ; -- Call to Dir to request patient from patient file (2)
+7 SET DIR("A")="Select Patient Name: "
+8 SET DIR(0)="FAO^1:30^S X=$$UP^XLFSTR(X) K:(X'=$C(32)&($L(X)<1)) X"
+9 SET DIR("?")="Enter Patient's Name (Last,First Middle) or SSN"
+10 WRITE !!
DO ^DIR
KILL DIR
if $DATA(DIRUT)
GOTO EXIT
+11 SET VAQIN=$$UP^XLFSTR(Y)
+12 ;
+13 ; -- Function call to get patient DFN (DIC)
+14 ; -- task = 1 (batch), task = 0 interactive
SET TASK=$DATA(ZTSK)
+15 ; -- Capacity start
if $DATA(XRTL)
DO T0^%ZOSV
+16 SET VAQDFN=$$GETDFN^VAQUTL97(VAQIN,TASK)
+17 ; -- Capacity stop
if $DATA(XRT0)
SET XRTN=$TEXT(+0)
if $DATA(XRT0)
DO T1^%ZOSV
+18 ; -- not in patient file (manual request)
if VAQDFN=-1
DO MANUAL
+19 if POP
GOTO MLOOP
+20 ; -- pulls off MAS data
if VAQDFN>0
DO VADPT
+21 ; -- Call to list processor (status screen)
DO EP^VAQREQ01
MLOOP ; -- loop back until no more patient added
GOTO MAIN
+1 ;
EXIT ; -- Cleanup and exit routine
+1 KILL POP,TASK,DFN
+2 KILL DIROUT,DIRUT,DTOUT,DUOUT,X,Y,BADSSN
+3 KILL VAQDFN,VAQIN,VAQNM,VAQISSN,VAQESSN,VAQIDOB,VAQEDOB,VAQIELG,VAQEELG
+4 KILL VAQAUSIT,VAQDOM,VAQDZ,VAQNOTI,VAQPID,VAQOPT,VAQRQADD,VAQRQDT,VAQRQSIT
+5 KILL VAQTRN,VAQDZN,VAQPR
+6 QUIT
+7 ;
MANUAL ; -- Gets Patient name SSN AND DOB if patient not found local PT file
+1 ; -- Don't allow manual entry of unsolicited request
+2 IF VAQOPT="UNS"
WRITE !!,"An unsolicited PDX request requires an entry from the patient file...",!,"Press any key to continue: "
SET POP=1
READ X:DTIME
QUIT
+3 ;
+4 ; -- Request data
+5 SET VAQEELG="Not Available"
+6 WRITE !,$CHAR(7)
+7 SET DIR(0)="Y"
+8 SET DIR("A")=VAQIN_" not found in local patient file... Request PDX"
+9 SET DIR("B")="YES"
+10 SET DIR("?")="You will be required to enter the needed information."
+11 SET DIR("?",1)="Enter 'YES' to request a PDX for a patient not in your Patient File."
+12 DO ^DIR
KILL DIR
IF $DATA(DIRUT)!('Y)
SET POP=1
QUIT
+13 ;
+14 ; -- Request patient name
+15 SET DIR(0)="FAO^3:30^S X=$$UP^XLFSTR(X) K:(X?1P.E)!(X'?1U.ANP)!(X'["","") X"
+16 SET DIR("A")=" Patient name : "
+17 SET DIR("B")=VAQIN
+18 SET DIR("?")="Enter patient's name in uppercase (LAST,FIRST MIDDLE)"
+19 SET DIR("??")="^D PAT^VAQREQ09"
+20 DO ^DIR
KILL DIR
IF $DATA(DUOUT)!$DATA(DTOUT)
SET POP=1
QUIT
+21 SET VAQNM=$$UP^XLFSTR(Y)
+22 ;
+23 ; -- Request pt SSN
+24 SET DIR(0)="FAO^9:10^K:(X'?9N)&(X'?9N1""P"")!($D(BADSSN(X))) X"
+25 SET DIR("A")=" SSN : "
+26 SET DIR("?")="Enter patient's SSN (without dashes)"
+27 DO ^DIR
KILL DIR
IF $DATA(DUOUT)!$DATA(DTOUT)
SET POP=1
QUIT
+28 SET VAQISSN=Y
SET VAQESSN=$$DASHSSN^VAQUTL99(Y)
+29 ;
+30 ; -- Checks for name or ssn required
+31 IF (VAQNM="")&(VAQISSN="")
WRITE !!,"Patient name or SSN is required...Press any key to continue: "
SET POP=1
READ X:DTIME
QUIT
+32 ;
+33 ; -- Request pt DOB
+34 SET DIR(0)="DAO^::EP"
+35 SET DIR("A")=" DATE OF BIRTH : "
+36 SET DIR("?")="Enter patient's date of birth"
+37 DO ^DIR
KILL DIR
IF $DATA(DUOUT)!$DATA(DTOUT)
SET POP=1
QUIT
+38 SET VAQIDOB=Y
SET VAQEDOB=$$DOBFMT^VAQUTL99(Y)
+39 QUIT
+40 ;
VADPT ; -- Pulls off patient demographics, for DFN
+1 ; -- Gets name,ssn,dob
+2 SET DFN=$PIECE(VAQDFN,U,1)
+3 DO DEM^VADPT
DO ELIG^VADPT
+4 SET VAQNM=VADM(1)
+5 SET VAQISSN=$PIECE(VADM(2),U,1)
SET VAQESSN=$PIECE(VADM(2),U,2)
+6 SET VAQIDOB=$PIECE(VADM(3),U,1)
SET VAQEDOB=$PIECE(VADM(3),U,2)
+7 SET VAQIELG=$PIECE(VAEL(6),U,1)
SET VAQEELG=$PIECE(VAEL(6),U,2)
+8 KILL VADM,VAEL,VAERR,VA
+9 QUIT
+10 ;
END ; -- End of code
+1 QUIT