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

APSQSIGN.m

Go to the documentation of this file.
  1. APSQSIGN ;IHS/OKCAO/POC - RTN PRINTS SIGNATURE LABEL;19-Jan-2011 08:35;SM
  1. ;;7.0;IHS PHARMACY MODIFICATIONS;**1003,1004,1005,1006,1007,1009,1010**;Sep 23, 2004
  1. ;ROUTINE TO WRITE SIGNATURE INFORMATION ON RX LABEL
  1. ; Modified - IHS/CIA/PLS - 01/13/04
  1. ; 03/21/05
  1. ; 10/26/05 - Line ENL+2
  1. ; IHS/MSC/PLS 03/01/06 - Line ZIS+11, added EN2+2
  1. ; 08/08/06 - Added line EN2+3
  1. ; 08/19/08 - Line EPAGN+4
  1. ; 04/30/10 - Line ENLT+5
  1. ; 01/19/11 - Line HDR+10
  1. ENL(PPL,QUIT,SKIP,WHICH,PRT,SITE,NOQ) ; EP for use when site is printing on laser labels
  1. N PTYPE,ZTRTN,ZTIO,ZTDESC,ZTREQ,ZTSAVE
  1. N VAR,ZTSK ; IHS/CIA/PLS - 10/26/05 - Added ZTSK variable
  1. S PRT=$P($G(PRT),U),PTYPE=$P($G(PRT),U,2)
  1. Q:'$L($G(PRT)) ; Requires a device
  1. S NOQ=$G(NOQ,0) ; Set default for No-queue
  1. I NOQ,PRT=$G(PSOLAP) D
  1. .D ENLT
  1. E D
  1. .S ZTRTN="ENLT^APSQSIGN"
  1. .S ZTDESC="Signature Label Print"
  1. .S ZTDTH=$H
  1. .S ZTIO=PRT
  1. .F VAR="SITE","PPL","QUIT","SKIP","WHICH" S:$D(@VAR) ZTSAVE(VAR)=""
  1. .D ^%ZTLOAD
  1. Q
  1. ENLT ; Tasked entry point
  1. S ZTREQ="@"
  1. N LP,RX,RX0,DFN,RXN,TMP,PSOFROM
  1. N LASTPCE,THISPCE,I,J,K,L,LINE,NAME,NAMDAT,LINEBEG,LINEEND
  1. N LINEMAX,LINESP,LINELEN,RX,RXSTNG,X,NUM,D,SITEPAR,RXN,RXSTING
  1. N DATE,DOB
  1. F LP=1:1 S RX=$P(PPL,",",LP) Q:RX="" D
  1. .; Build patient/script number array
  1. .S RX0=$G(^PSRX(RX,0))
  1. .S DFN=$P(RX0,U,2),RXN=$P(RX0,U)
  1. .I DFN,$L(RXN) S TMP(DFN,RXN)=""
  1. Q:'$D(TMP)
  1. ; Build array for printing
  1. S DFN=0 F S DFN=$O(TMP(DFN)) Q:'DFN D
  1. .N APSQSTG,LP,RXN
  1. .S RXN="" F LP=1:1 S RXN=$O(TMP(DFN,RXN)) Q:RXN="" D
  1. ..S APSQSTG(LP)=DFN_U_RXN
  1. .D PARMSET(SITE)
  1. .D BEGIN
  1. Q
  1. EN(APSQSTG,QUIT,SKIP,WHICH) ;EP
  1. ;QUIT IS TO DECIDE IF WANT TO EXECUTE THIS RTN AT ALL
  1. ;SKIP IS PARAMETER TO DECIDE IF PRINT EXTRA BLANK LABELS
  1. ;LINESKIP IS THE NUMBER OF LABELS TO SKIP
  1. ;APSQSTG IS THE STRING OF RX NUMBERS TO WRITE
  1. ;SITEPAR IS THE PARAMETER TO DECIDE IF WRITE
  1. ;LINEBEG IS THE NUMBER OF LINES TO SKIP AT BEGINNING OF LABEL
  1. ;LINEEND IS THE NUMBER OF LINES TO SKIP AT END OF LABEL
  1. ;LINEMAX IS THE NUMBER OF LINES IN THE LABEL
  1. ;LINESP IS THE NUMBER OF SPACES TO START AT ON EACH LINE
  1. ;LINELEN IS THE MAX LENGTH OF A LINE
  1. ;LINE IS THE NUMBER OF LINES USED
  1. ;SITEPAR IS PARAMETER TO DECIDE UNDER WHAT CONDITIONS THIS RTN PRINTS FOUND IN APSP CONTROL FILE
  1. N LASTPCE,THISPCE,I,J,K,L,LINE,NAME,NAMDAT,LINEBEG,LINEEND,LINEMAX,LINESP,LINELEN,RX,RXSTNG,X,NUM,D,SITEPAR,RXN,SKIP,RXSTING
  1. S:$G(QUIT)="" QUIT=1 ;DEFAULT TO EXIT OUT
  1. Q:$G(PSOFROM)="EDIT" ;IT'S COMING FROM EDIT MODE DON'T PRINT IHS/OKCAO/POC 4/19/2001
  1. Q:QUIT ;QUIT THE RTN
  1. D PARM Q:QUIT D BEGIN ;IHS/OKCAO/POC 1/9/2001 DON'T NEED TO OPEN DEVICE AS THIS RTN IS INSIDE APSPLBL
  1. Q
  1. ;
  1. DEV1 S IOP=$G(PSOLAP) D ^%ZIS Q:POP U IO
  1. Q
  1. ;
  1. PARM ;EP
  1. D:'$D(PSOPAR) ^PSOLSET ;IHS/DSD/ENM 11/06/96
  1. D PARMSET(PSOSITE)
  1. Q
  1. ;
  1. PARMSET(SITE) ;EP
  1. S SITEPAR=$$GET1^DIQ(9009033,SITE,306) ; Signature Label parameter
  1. S:$G(SITEPAR)="" SITEPAR="N"
  1. S LINEBEG=$$GET1^DIQ(9009033,SITE,5) ;$P(%APSITE,"^",6)
  1. S LINEEND=$$GET1^DIQ(9009033,SITE,6) ;$P(%APSITE,"^",7)
  1. S LINEMAX=$$GET1^DIQ(9009033,SITE,4) ;$P(%APSITE,"^",5)
  1. S LINESP=$$GET1^DIQ(9009033,SITE,9) ;$P(%APSITE,"^",10)
  1. S LINELEN=$$GET1^DIQ(9009033,SITE,3) ;$P(%APSITE,"^",4)
  1. S LINESKIP=$$GET1^DIQ(9009033,SITE,8) ;$P(%APSITE,"^",9)
  1. S:LINESKIP="" LINESKIP=0
  1. S:$G(SKIP)="" SKIP=0 ;DEFAULT TO DO NOT PRINT EXTRA BLANK LABELS
  1. Q
  1. ;
  1. BEGIN ;
  1. Q:SITEPAR["N"
  1. U IO
  1. I SITEPAR["A" D @WHICH,REST Q
  1. I SITEPAR["D"&$$MCD^AUPNPAT(DFN,DT) D @WHICH,REST Q
  1. I SITEPAR["R"&$$MCR^AUPNPAT(DFN,DT) D @WHICH,REST Q
  1. I SITEPAR["P"&$$PI^AUPNPAT(DFN,DT) D @WHICH,REST Q
  1. Q
  1. ;
  1. ONE ;
  1. S RXSTNG=""
  1. S X="" F S X=$O(APSQSTG(X)) Q:X="" D
  1. .S APSQSTG=$TR(APSQSTG(X),","," ")
  1. .S RXSTING=""
  1. .F I=1:1 S RX=$P(APSQSTG," ",I) Q:RX="" D
  1. ..S RXSTING=RXSTING_" "_$P($G(^PSRX(RX,0)),"^",1)
  1. .S RXSTNG=RXSTNG_RXSTING
  1. Q
  1. ;
  1. TWO S RXSTNG=""
  1. S X="" F S X=$O(APSQSTG(X)) Q:X="" D
  1. .S RXSTNG=RXSTNG_" "_$P(APSQSTG(X),"^",2)
  1. Q
  1. REST U IO
  1. S APSQSTG="RX NUMBER(S)"_RXSTNG
  1. D HDR
  1. S LASTPCE=""
  1. F I=1:1 S THISPCE=$P(APSQSTG," ",I) Q:THISPCE="" D
  1. .I $L(LASTPCE_" "_THISPCE)>LINELEN D ;
  1. ..W !,?LINESP,LASTPCE
  1. ..S LASTPCE=THISPCE
  1. ..S LINE=LINE+1
  1. ..I LINE+2>LINEMAX D SIG,FOOT,HDR
  1. ..I 1
  1. .E S LASTPCE=LASTPCE_" "_THISPCE
  1. I $L(LASTPCE) W !,?LINESP,LASTPCE S LINE=LINE+1 ;WRITE THE LAST LINE
  1. D SIG
  1. D FOOT
  1. D SKIP
  1. Q
  1. HDR ;HEADER INFO
  1. S LINE=0
  1. F D=1:1:LINEBEG W ! ;S LINE=LINE+1
  1. S NAME=$P(^DPT(DFN,0),"^",1)
  1. S HRN=$$HRN^AUPNPAT(DFN,DUZ(2))
  1. S NAMHRN="PT: "_NAME_" ("_$$HRN^AUPNPAT(DFN,DUZ(2))_")"
  1. I $L(NAMHRN)>LINELEN D
  1. .S NAME=$E(NAME,1,($L(NAME)-($L(NAMHRN)-LINELEN)))
  1. .S NAMHRN="PT: "_NAME_" ("_$$HRN^AUPNPAT(DFN,DUZ(2))_")"
  1. S DATE="DT: "_$$FMTE^XLFDT(DT,"2D")
  1. S DOB=$$FMTE^XLFDT($$DOB^AUPNPAT(DFN),"2DZ")
  1. W !,?LINESP,NAMHRN S LINE=LINE+1
  1. W !,?LINESP,DATE," DOB:",DOB S LINE=LINE+1
  1. Q
  1. ;
  1. SIG ;
  1. W !,?LINESP,"SIGNATURE:" S LINE=LINE+1
  1. Q
  1. ;
  1. F L=LINE:1:(LINEMAX-1) W !
  1. F K=1:1:LINEEND W !
  1. Q
  1. ;
  1. SKIP ;LINE FEED THE NUMBER OF LABELS INDICATED IN LINESKIP
  1. ;THIS PRINTS DEPENDING IF THIS RTN CALLED AT BEGINNING OR END OF PRINTING IN RTN APSPNE4
  1. Q:'$G(SKIP) ;SO DON'T PRINT IF NO SKIP
  1. F I=1:1:LINESKIP D
  1. .S NUM=LINEBEG+LINEEND+LINEMAX
  1. .F I=1:1:NUM W !
  1. Q
  1. ;
  1. ;
  1. EN1 ;EP
  1. ;COME HERE FROM OPTION TO PRINT/REPRINT SIGNATURE LABEL
  1. ;THIS SUBROUTINE DOES THE PRINTING OF THE SIGNATURE LABEL
  1. ;TO BE PLACED IN THE PATIENTS CHART IF THIS SITE
  1. N APSPZZN ;IHS/DSD/ENM 02/24/97
  1. N RX,RXSTRING,SKIP,PSOSD,APSPZDT,APSPBDT,PSORX,RXN,RXSTING,APSQSTG
  1. N LASTPCE,THISPCE,I,J,K,L,LINE,NAME,NAMDAT,LINEBEG,LINEEND
  1. N LINEMAX,LINESP,LINELEN,RX,RXSTNG,X,NUM,D,SITEPAR,PSOLIST
  1. EPAGN ;
  1. D PARM
  1. S APSPQFLG=0,APSPEDT=0 K ARRAY,APSPFLG ;IHS/DSD/ENM 01/29/97
  1. D PAT^APSPNUM Q:APSPQFLG!($G(PSORX("QFLG"))) ;IHS/BAO/DMH dmh added 3/1/2002
  1. Q:'$D(PSODFN) ;IHS/MSC/PLS - 08/19/08
  1. ;
  1. ;
  1. S APSPID=1 ;IHS/DSD/ENM 5/3/95 USED IN PSOLIST
  1. S PSOOPT=-1,PSONUM="LIST" D EN^APSPNUM
  1. I $G(Y(1))']"" D EMSG,EOJ Q
  1. G:Y["^" EPAGN
  1. D DEV
  1. Q
  1. DEV ;
  1. S %ZIS="QM"
  1. ;IHS/CIA/PLS - 08/31/05 - Changed to prompt with either the Signature Label device or the Label device as the default
  1. S %ZIS("A")="Enter SIGNATURE Device: " ;,IOP=$G(PSOLAP) D ^%ZIS
  1. S %ZIS("B")=$S($L($P($G(APSQSGLB),U)):$P(APSQSGLB,U),1:$G(PSOLAP)) D ^%ZIS
  1. I POP G EOJ
  1. I $D(IO("Q")),IO=IO(0) W !!,"Sorry, you cannot queue to your screen or to a slave printer.",! K IO("Q") D ^%ZISC G DEV
  1. ;
  1. I $D(IO("Q")) D D EOJ Q
  1. .;S ZTRTN="EN2^APSQSIGN(.PSOLIST,0,1,""ONE"")",ZTIO=ION
  1. .S ZTRTN="EN2^APSQSIGN",ZTIO=ION
  1. .F G="DFN","PSOSITE","PSOPAR","PSONUM","PSOLIST(1)" S:$D(@G) ZTSAVE(G)=""
  1. .S ZTDESC="Outpatient Pharm SIGNATURE Label"
  1. .D ^%ZTLOAD
  1. ;
  1. EN2 ;
  1. I '$G(PSOLIST(1)) D EOJ Q
  1. D PARMSET(PSOSITE)
  1. S SITEPAR="A" ;default to ALL ;IHS/MSC/PLS - 08/08/2006
  1. M APSQSTG=PSOLIST S QUIT=0,SKIP=1,WHICH="ONE"
  1. D BEGIN
  1. D ^%ZISC
  1. D EOJ
  1. Q
  1. EMSG ;
  1. W !,"No Rx's found for this date....!" H 2
  1. Q
  1. EOJ ;
  1. K APSPID
  1. Q
  1. UTIL ;WHAT COMES IS FOR HELP AND INPUT TRANSFORM OF NEW FIELD IN APSP CONTROL FILE NOT DONE YET****
  1. ;PHARMACY 6.0;UTILITY TO SET VARIOUS FIELDS
  1. ;;
  1. ;FROM FIELD # OF FILE #
  1. EXPL ;THIS IS THE EXPLANATION
  1. W !,"THE ENTRY IN THIS FIELD DETERMINES WHETHER A SIGNATURE LABEL IS PRINTED."
  1. W !,"A COMBINATION OF CODES CAN BE USED EXCEPT FOR 'A' OR 'N'."
  1. W !
  1. ;
  1. F I=1:1 S VAR=$P($T(LIST+I),";;",2) Q:VAR="" W !,VAR
  1. LIST K VAR Q
  1. ;;D=MEDICAID PRESCRIPTIONS
  1. ;;R=MEDICARE PRESCRIPTIONS
  1. ;;P=PRIVATE INSURANCE PRESCRIPTIONS
  1. ;;A=ALL PRESCRIPTIONS
  1. ;;N=NO PRESCRIPTIONS
  1. ;
  1. Q
  1. EDIT ;THIS IS THE EDIT
  1. S X=$TR(X,"BCEFGHIJKLMOQSTUVWXYZ")
  1. I X'?1.3A K X W "GOT TO BE 1 TO 3 CHARACTERS" Q
  1. S:X["A" X="A"
  1. S:X["N" X="N"
  1. I X["DD"!(X["RR")!(X["PP") K X Q
  1. W " "_X
  1. Q