Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: PSOERPC0

PSOERPC0.m

Go to the documentation of this file.
  1. PSOERPC0 ;BIRM/MFR - All Patients (Patient Centric) eRx Queue - ListManager ;09/28/22
  1. ;;7.0;OUTPATIENT PHARMACY;**700,750,746**;DEC 1997;Build 106
  1. ;
  1. ;Menu option entry point
  1. N MBMSITE,PSOSTFLT,PSOHDSTS,PSOCCRST,PSOSRTBY,PSORDER,PSOCSGRP,PSOLKBKD,PSOCSERX,PSOCSSCH,PSOCSGRP,PSOMAXQS
  1. N GRPLN,DIC,DFN,GRPLN,HIGHLN,LASTLINE,VALMCNT,PTMTCHLN,PRMTCHLN,DRMTCHLN,PATFLTR,VPATFLTR,DOBFLTR,MATFLTR,PSONEXTP
  1. N DIR,Y,DIRUT,DIROUT,CODE,DIRUT,DTOUT,PSOVIEW,PSOCSSCH,PSOCSERX,PSOQUIT,REDTFLTR,PRVFLTR,DRGFLTR
  1. N RESETLBD,PSOCLNC,PSORFRSH,IDX
  1. ;Initialization
  1. D INIT^PSOERPC2
  1. ;
  1. ;Division Selection
  1. I '$G(PSOSITE) D ^PSOLSET I '$D(PSOPAR) W $C(7),!!,"Pharmacy Division Must be Selected!",! G EXIT
  1. S PSNPINST=$$GET1^DIQ(59,PSOSITE,101,"I")
  1. ;
  1. ;Clinic Selection (MbM Sites Only)
  1. S PSOCLNC=+$$GET1^DIQ(59,PSOSITE,10,"I")
  1. I $G(MBMSITE) D I $G(PSOQUIT) G EXIT
  1. . W ! K DIC
  1. . S DIC(0)="AEMQ",DIC=44,DIC("S")="I '$P($G(^(""I"")),U,1)!$P($G(^(""I"")),U,2)"
  1. . S DIC("A")="eRx Clinic (Optional): "
  1. . I $G(PSOCLNC) S DIC("B")=$$GET1^DIQ(44,PSOCLNC,.01)
  1. . D ^DIC I Y="^"!$D(DTOUT)!$D(DUOUT) S PSOQUIT=1 Q
  1. . I $G(Y)>0 S PSOCLNC=+Y
  1. ;
  1. I '$$CHKKEY^PSOERX(DUZ) D G EXIT
  1. . W !,"You do not have the appropriate key to access this option." S DIR(0)="E" D ^DIR K DIR
  1. ;
  1. D:'$D(PSOPAR) ^PSOLSET I '$D(PSOPAR) D MSG^PSODPT G EXIT
  1. D:'$D(PSOPINST) INST^PSOORFI2 I $G(PSOIQUIT) K PSOIQUIT G EXIT
  1. S PSNPINST=$$GET1^DIQ(59,PSOSITE,101,"I")
  1. I 'PSNPINST W !,"NPI Institution must be defined to continue." S DIR(0)="E" D ^DIR K DIR G EXIT
  1. ;
  1. STS ; Status Selection Prompt
  1. K DIR S DIR(0)="SO^"
  1. I '$D(^XUSEC("PSO ERX WORKLOAD TECH",DUZ)) S DIR(0)=DIR(0)_"A:All;N:New;I:In Progress;W:Wait;"
  1. S DIR(0)=DIR(0)_"H:Hold;C:CCR;WP:Workload Processing"
  1. S DIR("B")=$S($D(^XUSEC("PSO ERX WORKLOAD TECH",DUZ)):"WP",1:"A")
  1. S DIR("?")=" "
  1. S IDX=0
  1. I '$D(^XUSEC("PSO ERX WORKLOAD TECH",DUZ)) D
  1. . S IDX=IDX+1,DIR("?",IDX)=" All - View all patients with actionable prescriptions"
  1. . S IDX=IDX+1,DIR("?",IDX)=" New - View patients with prescriptions in the 'NEW' status"
  1. . S IDX=IDX+1,DIR("?",IDX)=" In Process - View patients with prescriptions in the 'IN PROCESS' status"
  1. . S IDX=IDX+1,DIR("?",IDX)=" Wait - View patients with prescriptions in the 'WAIT' status"
  1. S IDX=IDX+1,DIR("?",IDX)=" Hold - View patients with prescriptions in the 'HOLD' status"
  1. S IDX=IDX+1,DIR("?",IDX)=" CCR - View patients with prescriptions in the 'CCR' status"
  1. S IDX=IDX+1,DIR("?",IDX)=" Workload Processing - Process New prescriptions for one patient at a"
  1. S IDX=IDX+1,DIR("?",IDX)=" time using FIFO (First In First Out) method"
  1. D ^DIR I $D(DIRUT)!$D(DIROUT) G EXIT
  1. S PSOSTFLT=Y,PSOQUIT=0
  1. I PSOSTFLT="WP" D MATFLTR I '$G(MATFLTR) G STS
  1. I PSOSTFLT="H" D
  1. . K DIR S DIR(0)="SO^S:SINGLE CODE;A:ALL HOLD CODES",DIR("B")="A"
  1. . S DIR("?")=" ",DIR("?",1)=" Single code - Allows selection of a single hold code",DIR("?",2)=" All Hold Codes - Selects all available hold codes"
  1. . D ^DIR I $D(DIRUT)!$D(DIROUT) S PSOQUIT=1 Q
  1. . I Y="S" S PSOHDSTS=$P($$HLDSTS^PSOERPC1(),U) I PSOHDSTS="" S PSOQUIT=1 Q
  1. . I Y="A" S PSOHDSTS="ALL"
  1. I PSOSTFLT="C" D
  1. . K DIR S DIR("B")="A",DIR(0)="SO^S:SINGLE CODE;A:ALL CCR CODES"
  1. . S DIR("?")=" ",DIR("?",1)=" Single code - Allows selection of a single CCR code",DIR("?",2)=" All CCR Codes - Selects all available CCR codes"
  1. . D ^DIR I $D(DIRUT)!$D(DIROUT) S PSOQUIT=1 Q
  1. . I Y="S" S PSOCCRST=$P($$CCRSTS^PSOERPC1("RXN^RXD^RXR^RXE^RXF^CAO^CAH^CAP^CAR^CAX^CAF^CXD^CXN^CXV^CXY^CXE"),U) I PSOCCRST="" S PSOQUIT=1 Q
  1. . I Y="A" S PSOCCRST="ALL"
  1. I PSOQUIT G STS
  1. ;
  1. EN ; - Entry point for the PC Action in the RX View
  1. ; Loading User's preferences
  1. D LOAD^PSOERPR0
  1. ;
  1. I PSOSTFLT="WP" D
  1. . D NEXTPAT
  1. E W !,"Please wait..." D EN^VALM("PSO ERX ALL PATIENTS QUEUE")
  1. ;
  1. G EXIT
  1. ;
  1. LMHDR ; ListMan Header Code
  1. D SHOW^VALM,HDR^PSOERPC0
  1. I $G(MBMSITE) S XQORM("B")="Next Screen"
  1. S XQORM("#")=$O(^ORD(101,"B","PSO ERX ALL PATIENTS SELECT",""))_"^1:"_VALMCNT
  1. S XQORM("??")="D HELP^VALM2,HDR^PSOERPC0"
  1. Q
  1. ;
  1. HDR ; - Builds the Header section
  1. D HDR^PSOERPC1
  1. Q
  1. ;
  1. INIT ; - Populates the Body section for ListMan
  1. N LOCKPATS,PAT
  1. K ^TMP("PSOERPC0",$J),^TMP("PSOERPCS",$J),^TMP("PSOERPAT",$J)
  1. S PAT=0 F S PAT=$O(^XTMP("PSOERXLOCK",PAT)) Q:'PAT S LOCKPATS(PAT)=+$G(^XTMP("PSOERXLOCK",PAT))
  1. D SETSORT^PSOERPC1,SETLINE^PSOERPC2
  1. S:$G(VALMSG)="" VALMSG="Select the entry # to view or ?? for more actions"
  1. Q
  1. ;
  1. HELP ; -- help code
  1. S X="?" D DISP^XQORM1 W !!
  1. Q
  1. ;
  1. LBD ; - Change Look Back Days Parameter Action
  1. D FULL^VALM1 S VALMBCK="R"
  1. W ! K DIR,DA,DIRUT,DIROUT,SAVEX
  1. S DIR(0)="52.351,1",DIR("B")=PSOLKBKD
  1. D ^DIR I $D(DIRUT)!$D(DIROUT) Q
  1. S PSOLKBKD=Y,RESETLBD=0 D REF S VALMBG=1
  1. Q
  1. ;
  1. SQ ; - Search Queue Entry Point
  1. D FULL^VALM1 S VALMBCK="R"
  1. N DIR,DUOUT,DIRUT,Y,X,ERXIEN,CHANGE,ERXPTIEN,PSOFPICK
  1. S CHANGE=0,IOINHI=$G(IOINHI),IOINORM=$G(IOINORM)
  1. REP ; - Repeat Prompt for additional filters
  1. K DIR S DIR("?",1)="Choose one or multiple filter criteria(s) to sort the current list."
  1. S DIR("?",2)="To remove an existing filter type ^#, where '#' is filter number below."
  1. S DIR("?")=" "
  1. S DIR("A")="SEARCH BY"
  1. S DIR(0)="SO^1:ERX PATIENT" I $D(PATFLTR) S DIR(0)=DIR(0)_" "_IOINHI_"("_$$EPATFLST^PSOERUT(44)_")"_IOINORM
  1. S DIR(0)=DIR(0)_";2:ERX DATE OF BIRTH" I $G(DOBFLTR) S DIR(0)=DIR(0)_" "_IOINHI_"("_$$FMTE^XLFDT(DOBFLTR,"2Z")_")"_IOINORM
  1. S DIR(0)=DIR(0)_";3:ERX REFERENCE NUMBER"
  1. S DIR(0)=DIR(0)_";4:VISTA RX #"
  1. S DIR(0)=DIR(0)_";5:VISTA PATIENT" I $D(VPATFLTR) S DIR(0)=DIR(0)_" "_IOINHI_"("_$$VPATFLST^PSOERUT(44)_")"_IOINORM
  1. S DIR(0)=DIR(0)_";6:MATCH STATUS" I $G(MATFLTR) S DIR(0)=DIR(0)_" "_IOINHI_"("_$$MATCHLBL^PSOERPC2(MATFLTR)_")"_IOINORM
  1. W !!,$G(IOINHI),"NOTE: Only patients with actionable records are captured with this search.",IOINORM
  1. W !,IOINHI," Non-Actionable records can be searched through the SQ action under Rx",IOINORM
  1. W !,IOINHI," List View.",IOINORM
  1. D ^DIR
  1. I X'="^",X?1"^".N D G REP
  1. . K:X="^1" PATFLTR,VPATFLTR K:X="^2" DOBFLTR K:X="^5" PATFLTR,VPATFLTR K:X="^6" MATFLTR
  1. . S CHANGE=1
  1. I $D(DUOUT)!($D(DIRUT)) D:CHANGE REF S:CHANGE VALMBG=1 Q
  1. S PSOFPICK=+$G(Y)
  1. I PSOFPICK=1 D EPATFLTR S CHANGE=1 G REP
  1. I PSOFPICK=2 D DOBFLTR S CHANGE=1 G REP
  1. I PSOFPICK=3 D ERXFLTR G:'$G(ERXFLTR) REP D I '$G(CHANGE) Q
  1. . ; - Entering the eRx Record
  1. . D EN^PSOERX1(ERXFLTR)
  1. . ; - Unlocking the eRx Patient
  1. . S ERXPTIEN=$$GET1^DIQ(52.49,ERXFLTR,.04,"I") Q:'ERXPTIEN
  1. . D UL^PSOERX1A(ERXPTIEN)
  1. . S CHANGE=1
  1. I PSOFPICK=4 D RXFLTR G:'$G(ERXFLTR) REP D I '$G(CHANGE) Q
  1. . ; - Entering the eRx Record
  1. . D EN^PSOERX1(ERXFLTR)
  1. . ; - Unlocking the eRx Patient
  1. . S ERXPTIEN=$$GET1^DIQ(52.49,ERXFLTR,.04,"I") Q:'ERXPTIEN
  1. . D UL^PSOERX1A(ERXPTIEN)
  1. . S CHANGE=1
  1. I PSOFPICK=5 D VPATFLTR S CHANGE=1 G REP
  1. I PSOFPICK=6 D MATFLTR S CHANGE=1 G REP
  1. D REF S VALMBG=1
  1. Q
  1. ;
  1. VPATFLTR ; - VistA Patient Filter
  1. N DIC,Y,EPAT,X K VPATFLTR
  1. REP1 ; - Repeat VistA Patient Prompt
  1. K DIC,DIR W ! S DIC=2,DIC(0)="QEAM",DIC("A")="VISTA PATIENT: ",DIC("S")="I '$$DEAD^PSONVARP(Y)"
  1. I $G(MBMSITE) S DIC("W")="D PATIDS^PSOERPT1"
  1. D ^DPTLK I $G(Y)'>0 Q
  1. S VPATFLTR(+Y)="" K PATFLTR
  1. S EPAT=0 F S EPAT=$O(^PS(52.49,"AVPAT",+Y,EPAT)) Q:'EPAT D
  1. . S PATFLTR(EPAT)=""
  1. I '$O(PATFLTR(0)) D K VPATFLTR G REP1
  1. . W !,IOINHI,"There are no eRx Patient(s) matched to this VistA Patient",IOINORM,$C(7)
  1. Q
  1. ;
  1. EPATFLTR ; - eRx Patient Filter
  1. N DIR,PAT,XX,RANGE,COMSEG,I,J,RECDAT,DIRUT,DIROUT,QUIT
  1. REP2 ; - Repeat eRx Patient Prompt
  1. K ^TMP($J,"PSOPTLST")
  1. S DIR(0)="F^3:30",DIR("A")="ERX PATIENT NAME"
  1. W ! D ^DIR I $D(DIRUT)!$D(DIROUT) Q
  1. K PATLST D FIND^DIC(52.46,"","@;.01;.08;3.3;3.4;IX","",X,,"B","","",$NA(^TMP($J,"PSOPTLST")))
  1. I '$D(^TMP($J,"PSOPTLST","DILIST",2)) D G REP2
  1. . W !,IOINHI,"No eRx Patient found",IOINORM,$C(7)
  1. I +$G(^TMP($J,"PSOPTLST","DILIST",0))>100 D K ^TMP($J,"PSOPTLST") G REP2
  1. . W !!,IOINHI,"There are too many records to display, please narrow your search.",IOINORM,$C(7)
  1. ;
  1. W ! D PATLHDR("E")
  1. S (QUIT,CNT)=0 K DIRUT,DTOUT
  1. S PAT="" F S PAT=$O(^TMP($J,"PSOPTLST","DILIST","ID",PAT)) Q:'PAT D I QUIT Q
  1. . W !,PAT,".",?4,$E(^TMP($J,"PSOPTLST","DILIST","ID",PAT,.01),1,30)
  1. . I ^TMP($J,"PSOPTLST","DILIST","ID",PAT,.08)'="" D
  1. . . S X=^TMP($J,"PSOPTLST","DILIST","ID",PAT,.08) D ^%DT W ?35,$$FMTE^XLFDT(Y,"5Z")
  1. . I ^TMP($J,"PSOPTLST","DILIST","ID",PAT,3.3)'="" D
  1. . . W ?47,$E(^TMP($J,"PSOPTLST","DILIST","ID",PAT,3.3),1,20)_"-"_$$STATEABB^PSOERUT(52.46,^TMP($J,"PSOPTLST","DILIST",2,PAT))
  1. . S RECDAT=$O(^PS(52.49,"PAT2",^TMP($J,"PSOPTLST","DILIST",2,PAT),999999999),-1)
  1. . I RECDAT W ?71,$$FMTE^XLFDT(RECDAT\1,"2Z")
  1. . S CNT=CNT+1
  1. . I CNT>18,$O(^TMP($J,"PSOPTLST","DILIST","ID",PAT)),$Y>(IOSL-4) D
  1. . . K DIR S DIR(0)="E" D ^DIR I $D(DIRUT)!$D(DIROUT) S QUIT=1 Q
  1. . . W @IOF D PATLHDR("E")
  1. ;
  1. K DIR S DIR("A")="SELECT (1-"_+$G(^TMP($J,"PSOPTLST","DILIST",0))_"): "
  1. S DIR(0)="LA^1:"_+$G(^TMP($J,"PSOPTLST","DILIST",0)) W ! D ^DIR I $D(DIRUT)!$D(DIROUT) G REP2
  1. S RANGE=X
  1. ;
  1. K PATFLTR
  1. F I=1:1:$L(RANGE,",") D
  1. . S COMSEG=$P(RANGE,",",I)
  1. . F J=+COMSEG:1:$S(COMSEG["-":$P(COMSEG,"-",2),1:+COMSEG) D
  1. . . I '$D(^TMP($J,"PSOPTLST","DILIST",2,J)) Q
  1. . . S PATFLTR(^TMP($J,"PSOPTLST","DILIST",2,J))=""
  1. K ^TMP($J,"PSOPTLST")
  1. Q
  1. ;
  1. PATLHDR(PATTYP) ; - Prints the Patient List Header
  1. ;Input: Patient Type - "V": VistA Patient | "E": eRx Patient
  1. N XX W !?73,"LAST",!,"#",?4,$S(PATTYP="E":"ERX",1:"VISTA")_" PATIENT NAME",?35,"DOB",?47,"CITY",?71,"REC.DATE"
  1. S $P(XX,"-",80)="" W !,XX
  1. Q
  1. ;
  1. DOBFLTR ; - DOB Filter
  1. N DIR,Y,X
  1. I $G(DOBFLTR) S DIR("B")=$$FMTE^XLFDT(DOBFLTR,"2Z")
  1. S DIR(0)="DA^:"_DT_":EX",DIR("A")="Date of Birth (DOB): "
  1. W ! D ^DIR I $D(DIRUT)!$D(DIROUT) Q
  1. S DOBFLTR=Y
  1. Q
  1. ;
  1. MATFLTR ; - Match Status Filter
  1. N DIR,Y,X
  1. S DIR("A")="MATCH STATUS"
  1. S DIR(0)="SO^1:"_$S($G(MBMSITE):"PATIENT FAIL - ",1:"")_"PATIENT NOT MATCHED"
  1. S DIR(0)=DIR(0)_";2:"_$S($G(MBMSITE):"PROVIDER FAIL - ",1:"")_"PROVIDER NOT MATCHED"
  1. S DIR(0)=DIR(0)_";3:"_$S($G(MBMSITE):"DRUG FAIL - ",1:"")_"DRUG NOT MATCHED"
  1. S DIR(0)=DIR(0)_";4:"_$S($G(MBMSITE):"BASIC - ",1:"")_"PATIENT, PROVIDER AND DRUG MATCHED"
  1. I $G(PSOSTFLT)="WP" S DIR(0)=DIR(0)_";5:ALL (NO FILTERS)",DIR("B")=5
  1. W ! D ^DIR I $D(DUOUT)!($D(DIRUT)) Q
  1. S MATFLTR=Y
  1. Q
  1. ;
  1. ERXFLTR() ; - eRx ID Filter
  1. N DIC,Y,DTOUT,DUOUT,QUIT,ERXID,ERXPTIEN
  1. K ERXFLTR
  1. W ! S DIC="52.49",DIC(0)="QEA",DIC("A")="ERX REFERENCE NUMBER: "
  1. S QUIT=0
  1. F D Q:QUIT
  1. . D ^DIC I $D(DTOUT)!$D(DUOUT)!'Y!(X="") S QUIT=1 Q
  1. . S ERXID=+Y
  1. . I 'ERXID W !,"This prescription is not an eRx prescription." Q
  1. . I '$G(MBMSITE),$$GET1^DIQ(52.49,ERXID,24.1,"I")'=PSNPINST D Q
  1. . . W !!,"eRx belongs to a different Division: "_$$GET1^DIQ(52.49,ERXID,24.1),!,$C(7)
  1. . S ERXPTIEN=+$$GET1^DIQ(52.49,ERXID,.04,"I")
  1. . ; - Locking the eRx Patient
  1. . I '$$LOCK^PSOERPC1(ERXPTIEN) D Q
  1. . . W !!,"The patient for this eRx is currently locked by "_$$GET1^DIQ(200,+$G(^XTMP("PSOERXLOCK",ERXPTIEN)),.01)_".",!,$C(7) H 1
  1. . S ERXFLTR=ERXID,QUIT=1
  1. Q
  1. ;
  1. RXFLTR() ; - Rx # Filter
  1. N DIC,Y,DTOUT,DUOUT,QUIT,ERXID,ERXPTIEN
  1. K ERXFLTR
  1. W ! S DIC="52",DIC(0)="QEAM",DIC("A")="VISTA Rx #: "
  1. S QUIT=0
  1. F D Q:QUIT
  1. . D ^DIC I $D(DTOUT)!$D(DUOUT)!'Y!(X="") S QUIT=1 Q
  1. . S ERXID=$$ERXIEN^PSOERXUT(+Y)
  1. . I 'ERXID W !,"This prescription is not an eRx prescription." Q
  1. . I '$G(MBMSITE),$$GET1^DIQ(52.49,ERXID,24.1,"I")'=PSNPINST D Q
  1. . . W !!,"eRx belongs to a different Division: "_$$GET1^DIQ(52.49,ERXID,24.1),!,$C(7)
  1. . S ERXPTIEN=+$$GET1^DIQ(52.49,ERXID,.04,"I")
  1. . ; - Locking the eRx Patient
  1. . I '$$LOCK^PSOERPC1(ERXPTIEN) D Q
  1. . . W !!,"The patient for this eRx is currently locked by "_$$GET1^DIQ(200,+$G(^XTMP("PSOERXLOCK",ERXPTIEN)),.01)_".",!,$C(7) H 1
  1. . S ERXFLTR=ERXID,QUIT=1
  1. Q
  1. ;
  1. RF ; - Remove All Filters
  1. K PATFLTR,VPATFLTR,DOBFLTR,MATFLTR D REF S VALMBG=1
  1. Q
  1. ;
  1. CS ; - Group/Un-group Controlled Substances
  1. S PSOCSGRP=$S($G(PSOCSGRP):0,1:1) D REF
  1. Q
  1. ;
  1. CV ; - Change View
  1. D EN^PSOERPR0 I $G(PSORFRSH) D REF S VALMBG=1
  1. S VALMBCK="R"
  1. Q
  1. ;
  1. SORT(FIELD) ; - Sort entries by FIELD
  1. I PSOSRTBY=FIELD S PSORDER=$S(PSORDER="A":"D",1:"A")
  1. E S PSOSRTBY=FIELD,PSORDER="A"
  1. D REF
  1. Q
  1. ;
  1. SEL ; - Process selection of one entry
  1. N PSOSEL,ERXPTIEN,TMPLKBKD
  1. S VALMBCK="R" K PSONEXTP
  1. S PSOSEL=+$P(XQORNOD(0),"=",2) I 'PSOSEL S VALMSG="Invalid selection!",VALMBCK="R" Q
  1. S ERXPTIEN=$G(^TMP("PSOERPC0",$J,PSOSEL,"PATIEN")) I 'ERXPTIEN S VALMSG="Invalid selection!",VALMBCK="R" Q
  1. ; - Locking the eRx Patient
  1. I '$$LOCK^PSOERPC1(ERXPTIEN) Q
  1. D ; - Entering the Single Patient View (Protecting Preference Parameters)
  1. . N PSOSRTBY,PSORDER,PSOCSGRP,PSOALLST
  1. . S TMPLKBKD=PSOLKBKD D LST^PSOERPT0(ERXPTIEN)
  1. . I $G(RESETLBD) S PSOLKBKD=TMPLKBKD
  1. ; - Unlocking the eRx Patient
  1. D UL^PSOERX1A(ERXPTIEN)
  1. I $G(PSORFRSH) D REF
  1. Q
  1. ;
  1. NEXTPAT ; Automatically Selects the Next Patient
  1. N ERXPTIEN,NEXTPAT
  1. S VALMBCK="R",NEXTPAT=0
  1. ; - Locking the eRx Patient
  1. F S ERXPTIEN=$$NEXTPAT^PSOERPC1(NEXTPAT) Q:'ERXPTIEN Q:$$LOCK^PSOERPC1(ERXPTIEN) D
  1. . S NEXTPAT=ERXPTIEN I PSOSTFLT="WP" K ^XTMP("PSOERXWP",ERXPTIEN,DUZ)
  1. I 'ERXPTIEN Q
  1. D ; - Entering the Single Patient View (Protecting Preference Parameters)
  1. . N PSOSRTBY,PSORDER,PSOCSGRP,PSOALLST
  1. . D LST^PSOERPT0(ERXPTIEN)
  1. ; - Unlocking the eRx Patient
  1. D UL^PSOERX1A(ERXPTIEN)
  1. Q
  1. ;
  1. RX ; - Switch to Rx View
  1. D EN^PSOERRX0 S VALMBCK="Q"
  1. Q
  1. ;
  1. REF ; - Screen Refresh
  1. W ?65,"Please wait..." D INIT,HDR,REVLOCKS^PSOERPC2 S VALMBCK="R"
  1. S PSORFRSH=0
  1. Q
  1. ;
  1. EXIT ; - exit code
  1. K ^TMP("PSOERPC0",$J),^TMP("PSOERPCS",$J),^TMP("PSOERPAT",$J)
  1. D FULL^VALM1
  1. Q