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

APSQDI1.m

Go to the documentation of this file.
  1. APSQDI1 ;IHS/ASDS/ENM/POC - LOOK UP CONTINUED FM APSQDI[ 05/25/2001 4:05 PM ]
  1. ;;6.0;IHS PHARMACY MODIFICATIONS;**3**;01/10/2001
  1. EN1 ;
  1. K APSQARR
  1. S APSQCNT=0,APSQLKUP=""
  1. ;S APSQSEQ=0 F S APSQSEQ=$O(^APSQFA("S",APSQSEQ)) Q:APSQSEQ="" D
  1. S:'$D(PSOSITE) PSOSITE=$O(^PS(59,"C",DUZ(2),"")) ;IF PSOSITE NOT SET MULTIPLE DIVISIONS IHS/OKCAO/POC 1/10/2001
  1. S:'$O(^APSQFA("SD",PSOSITE,"")) VALMQUIT=1 ;QUIT IF NO ENTRIES IHS/OKCAO/POC 5/12/2001
  1. S APSQSEQ=0 F S APSQSEQ=$O(^APSQFA("SD",PSOSITE,APSQSEQ)) Q:APSQSEQ="" D ;USE THE SD XREF MULTIPLE DIVISIONS 1/10/2001 IHS/OKCAO/POC
  1. .S APSQLKUP=$$SETSTR^VALM1($J(APSQSEQ,2),APSQLKUP,3,3)
  1. .;S APSQIEN=$O(^APSQFA("S",APSQSEQ,""))
  1. .S APSQIEN=$O(^APSQFA("SD",PSOSITE,APSQSEQ,"")) ;USE THE SD XREF MULTIPLE DIVISIONS 1/10/2001 IHS/OKCAO/POC
  1. .Q:'APSQIEN
  1. .S APSQNAME=$P(^APSQFA(APSQIEN,0),U,1)
  1. .S APSQLKUP=$$SETSTR^VALM1(APSQNAME,APSQLKUP,8,15)
  1. .;I $D(^APSQFA(APSQIEN,2))#10 S APSQSEC="EXPLODE"
  1. .I $O(^APSQFA(APSQIEN,2,0)) S APSQSEC="EXPLODE"
  1. .E S APSQSEC=$P(^PSDRUG($P(^APSQFA(APSQIEN,0),U,2),0),U,1)
  1. .S APSQLKUP=$$SETSTR^VALM1(APSQSEC,APSQLKUP,25,20)
  1. .S APSQARR(APSQSEQ,0)=APSQLKUP
  1. .S APSQCNT=APSQCNT+1
  1. .S APSQARR("IDX",APSQCNT,APSQSEQ)=APSQIEN
  1. .S APSQLKUP=""
  1. .Q
  1. ;NEED TO SET VALMCNT=APSQCNT
  1. Q
  1. EN2 ;LOOK UP
  1. K APSQARR
  1. S (APSQCNT,APSQLKUP)="",(APSQLAST,APSQKILL)=0
  1. ;S APSQSEQ=0 F S APSQSEQ=$O(^APSQFA("S",APSQSEQ)) Q:APSQSEQ="" D
  1. S:'$D(PSOSITE) PSOSITE=$O(^PS(59,"C",DUZ(2),"")) ;IF NOT SET MULTIPLE DIVISIONS IHS/OKCAO/POC 1/10/2001
  1. S:'$O(^APSQFA("SD",PSOSITE,"")) VALMQUIT=1 ;QUIT IF NO ENTRIES IHS/OKCAO/POC 5/12/2001
  1. S APSQSEQ=0 F S APSQSEQ=$O(^APSQFA("SD",PSOSITE,APSQSEQ)) Q:APSQSEQ="" D ;IHS/OKCAO/POC USE THIS NEW SD XREF TO GET ONLY DRUGS FOR THIS DIVISION MULTIPLE DIVISIONS1/10/2001
  1. .;ADD THE NEXT TWO LINES TO SCREEN OUT ENTRIES NOT THIS DIVISION IHS/OKCAO/POC 1/10/2001
  1. .;S APSQSEEN=$O(^APSQFA("SD",PSOSITE,APSQSEQ,""))
  1. .;Q:$P(^APSQFA(APSQSEEN,0),U,10)'=PSOSITE
  1. .D SUB1
  1. .D SWT
  1. .;S:'APSQKILL APSQCNT=APSQCNT+1
  1. .D FILE:'APSQKILL
  1. I APSQKILL S APSQLAST=1 D FILE ;FOR THE LAST ONE IF ODD
  1. ;D FILE2
  1. Q
  1. SUB1 ;S APSQSEQ=APSQSEQ+1
  1. I $D(APSQ("GOT",APSQSEQ)) S APSQSTAR=1
  1. ;I 'APSQKILL S APSQLKUP=$$SETSTR^VALM1($J($S($G(APSQSTAR):"*",1:"")_APSQSEQ,2),APSQLKUP,3,3)
  1. I 'APSQKILL S APSQLKUP=$$SETSTR^VALM1($J($S($G(APSQSTAR):"*",1:"")_APSQSEQ,4),APSQLKUP,3,4)
  1. ;I APSQKILL S APSQLKUP=$$SETSTR^VALM1($J($S($G(APSQSTAR):"*",1:"")_APSQSEQ,2),APSQLKUP,40,3)
  1. I APSQKILL S APSQLKUP=$$SETSTR^VALM1($J($S($G(APSQSTAR):"*",1:"")_APSQSEQ,4),APSQLKUP,40,4)
  1. K APSQSTAR
  1. ;S APSQIEN=$O(^APSQFA("S",APSQSEQ,""))
  1. S APSQIEN=$O(^APSQFA("SD",PSOSITE,APSQSEQ,"")) ;USE THE SD XREF MULTIPLE DIVISIONS IHS/OKCAO/POC 1/10/2001
  1. Q:'APSQIEN
  1. S APSQNAME=$P(^APSQFA(APSQIEN,0),U,1)
  1. I 'APSQKILL S APSQLKUP=$$SETSTR^VALM1(APSQNAME,APSQLKUP,8,10)
  1. I APSQKILL S APSQLKUP=$$SETSTR^VALM1(APSQNAME,APSQLKUP,45,10)
  1. ;I $D(^APSQFA(APSQIEN,2))#10 S APSQSEC="EXPLODE"
  1. I $O(^APSQFA(APSQIEN,2,0)) S APSQSEC="EXPLODE"
  1. E S APSQSEC=$P(^PSDRUG($P(^APSQFA(APSQIEN,0),U,2),0),U,1)
  1. I 'APSQKILL S APSQLKUP=$$SETSTR^VALM1(APSQSEC,APSQLKUP,20,15)
  1. I APSQKILL S APSQLKUP=$$SETSTR^VALM1(APSQSEC,APSQLKUP,57,15)
  1. Q
  1. FILE ;
  1. S APSQCNT=APSQCNT+1
  1. ;S APSQARR(APSQSEQ,0)=APSQLKUP
  1. S APSQARR(APSQCNT,0)=APSQLKUP
  1. S APSQLKUP=""
  1. Q
  1. ;LINE BELOW FOR LAST ONE
  1. I APSQLAST S APSQLAST=0 S APSQARR("TMP",APSQCNT)=(APSQCNT*2-1)
  1. ;THIS WHOLE SERIES OF LINES TO SET IDX IS TO GET AROUND ONE COLUMN
  1. E S APSQARR("TMP",APSQCNT)=(APSQCNT*2-1)_","_(APSQCNT*2)
  1. Q
  1. FILE2 ;FIX IDX
  1. S (I,IDX)=0 F S IDX=$O(APSQARR("TMP",IDX)) Q:IDX="" D
  1. .S I=I+1
  1. .;VALM("BM") IS THE BOTTOM MARGIN MUST BE 6!!! OR MUST CHANGE "4" BELOW
  1. .S APSQBM=VALM("BM")-4 ;GOT FOUR LINES AT BEGINNING OF HEADING
  1. .S APSQARR("IDX",IDX,$S((I=APSQBM)&$P(APSQARR("TMP",IDX),",",2):$P(APSQARR("TMP",IDX),",",2),1:$P(APSQARR("TMP",IDX),",",1)))=""
  1. .I I=VALM("BM") S I=0
  1. ;NEED TO SET VALMCNT=APSQCNT
  1. Q
  1. SWT ;SWITH APSQKILL BACK AND FORTH BETWEEN 1 AND 0
  1. ;APSQKILL IS USED TO SET THE FIRST AND SECOND PART OF VARIABLE APSQLKUP
  1. ;AND SET A APSQARR("DIR",APSQSEQ,APSQIEN)=""
  1. S APSQARR("DIR",APSQSEQ,APSQIEN)=""
  1. I APSQKILL=1 S APSQKILL=0 Q
  1. E S APSQKILL=1
  1. Q
  1. DEL ;DELETE ENTITIES
  1. ;
  1. D FULL^VALM1
  1. I '$D(APSQ("GOT")) W !,"YOU DONT HAVE ANY ENTRIES TO DELETE-BYE" D BACK Q
  1. S APSQBEG=$O(APSQARR("DIR","")),APSQEND=$O(APSQARR("DIR",""),-1)
  1. K DIR
  1. S DIR(0)="LO^"_APSQBEG_":"_APSQEND
  1. D ^DIR
  1. I '+Y W !,"NO SELECTIONS-BYE" Q
  1. S APSQY="" F S APSQY=$O(Y(APSQY)) Q:APSQY="" D
  1. .F I=1:1 S APSQGOT=$P(Y(APSQY),",",I) Q:APSQGOT="" D
  1. ..S APSQGOTT=$O(APSQ("GOT",APSQGOT,""))
  1. ..I APSQGOTT="" W !,"NO SUCH CRITTER ",APSQGOT
  1. ..;E S APSQARR("GOT",APSQGOTT)=""
  1. ..;SO APSQ("GOT") IS THE ARRAY YOU CHOSE
  1. ..;E S APSQARR("GOT",APSQGOT,APSQGOTT)="",APSQ("GOT",APSQGOT,APSQGOTT)=""
  1. ..E S APSQARR("GOT",APSQGOT,APSQGOTT)="" ;FOR LIST BUT GETS DELETED AT ENTRY POINT EN?
  1. ..E K APSQ("GOT",APSQGOT,APSQGOTT)
  1. D LIST,HANG,WIPE,EN2,BACK
  1. Q
  1. ADD ;SELECT ENTITIES
  1. ;D EN^VALM2(XQORNOD(0),"O") ;this list man call allows user to select an entry in list
  1. ;I '$D(VALMY) W !,"Nothing selected." Q
  1. D FULL^VALM1 ;give me full control of screen
  1. Q:'$D(APSQARR("DIR"))
  1. S APSQBEG=$O(APSQARR("DIR","")),APSQEND=$O(APSQARR("DIR",""),-1)
  1. K DIR
  1. S DIR(0)="LO^"_APSQBEG_":"_APSQEND
  1. D ^DIR
  1. I '+Y W !,"NO SELECTIONS-BYE" Q
  1. S APSQY="" F S APSQY=$O(Y(APSQY)) Q:APSQY="" D
  1. .F I=1:1 S APSQGOT=$P(Y(APSQY),",",I) Q:APSQGOT="" D
  1. ..S APSQGOTT=$O(APSQARR("DIR",APSQGOT,""))
  1. ..I APSQGOTT="" W !,"NO SUCH CRITTER ",APSQGOT," SO ITEM DELETED!"
  1. ..;E S APSQARR("GOT",APSQGOTT)=""
  1. ..;SO APSQ("GOT") IS USED TO PUT STARS IN FRONT OF SEQUENCE
  1. ..;APSQARR IS FOR LIST BUT GETS DELETED AT EN? ENTRY POINT
  1. ..E S APSQARR("GOT",APSQGOT,APSQGOTT)="",APSQ("GOT",APSQGOT,APSQGOTT)=""
  1. D LIST,HANG,SET,EN2,BACK
  1. Q
  1. HANG ;
  1. K DIR
  1. S DIR(0)="EO",DIR("A")="HIT RETURN TO CONTINUE..." D ^DIR K DIR
  1. Q
  1. LIST ;LIST ENTRIES SELECTED
  1. W !,$S($D(APSQARR("GOT")):"",1:"NO ")," ENTRIES SELECTED:"
  1. S APSQLIST=0 F S APSQLIST=$O(APSQARR("GOT",APSQLIST)) Q:APSQLIST="" D
  1. .S APSQLIS1=$O(APSQARR("GOT",APSQLIST,""))
  1. .W !,$P(^APSQFA(APSQLIS1,0),U,1)
  1. Q
  1. ;
  1. SET ;SET UP FOR NEXT PART
  1. S APSQLIST=0 F S APSQLIST=$O(APSQ("GOT",APSQLIST)) Q:APSQLIST="" D
  1. .S APSQLIS1=$O(APSQ("GOT",APSQLIST,""))
  1. .I $O(^APSQFA(APSQLIS1,2,0)) D
  1. ..S APSQEXP=0 F S APSQEXP=$O(^APSQFA(APSQLIS1,2,APSQEXP)) Q:'+APSQEXP D ;
  1. ...S APSQEXP1=$P(^APSQFA(APSQLIS1,2,APSQEXP,0),U,1)
  1. ...I APSQEXP1 S DRUGPICK(APSQEXP1)=""
  1. ...;S APSQEXP2=$P(^APSQFA(APSQEXP1,0),U,2) ;S DRUG(APSQEXP1)=""
  1. ...;I APSQEXP2 S DRUG(APSQEXP2)=""
  1. ..K DRUGPICK(APSQLIS1)
  1. .I '$O(^APSQFA(APSQLIS1,2,0)) I $P(^APSQFA(APSQLIS1,0),U,2) S DRUGPICK(APSQLIS1)=""
  1. .;I $P(^APSQFA(APSQLIS1,0),U,2) S DRUG($P(^(0),U,2))=""
  1. Q
  1. BACK ;GO BACK
  1. D TERM^VALM0
  1. S VALMBCK="R"
  1. ;D INIT AGAIN
  1. K DIR
  1. Q
  1. ;
  1. WIPE ;DELEETE ENTRIES FROM DRUG ARRAY USING APSQARR("GOT")
  1. S APSQGOT=0 F S APSQGOT=$O(APSQARR("GOT",APSQGOT)) Q:APSQGOT="" D
  1. .S APSQGOT1=$O(APSQARR("GOT",APSQGOT,""))
  1. .I $O(^APSQFA(APSQGOT1,2,0)) D
  1. ..S DRUG=0 F S DRUG=$O(^APSQFA(APSQGOT1,2,DRUG)) Q:DRUG'=+DRUG D
  1. ...I DRUG S DRUG1=$P(^APSQFA(APSQGOT1,2,DRUG,0),U,1)
  1. ...;I DRUG1 K DRUG(DRUG1)
  1. ...I DRUG1 K DRUGPICK(DRUG1)
  1. .;I $P(^APSQFA(APSQGOT1,0),U,2) K DRUG($P(^(0),U,2))
  1. .I $P(^APSQFA(APSQGOT1,0),U,2) K DRUGPICK(APSQGOT1)
  1. Q