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

PSARDCBL.m

Go to the documentation of this file.
  1. PSARDCBL ;BIRM/MHA - Return Drug Batch Work List - ListMan ;07/01/08
  1. ;;3.0; DRUG ACCOUNTABILITY/INVENTORY INTERFACE;**69,72**;10/24/97;Build 2
  1. ;
  1. ST ; Entry point
  1. I '$$CHKEY^PSARDCUT() Q ;security key check
  1. N PSAPHLOC,PSADTRNG,PSABASTS
  1. ;
  1. ; - Pharmacy location selection
  1. S PSAPHLOC=$$PHLOC^PSARDCUT() I 'PSAPHLOC Q
  1. ;
  1. ; - Date range selection
  1. S PSADTRNG=""
  1. ;
  1. ; - Return drug credit status selection
  1. S PSABASTS="AP,PU"
  1. D EN(PSAPHLOC,PSADTRNG,PSABASTS)
  1. Q
  1. EN(PSAPHLOC,PSADT,PSASTA) ;- ListManager entry point
  1. N PSALOC S PSALOC=+PSAPHLOC
  1. N LASTLINE
  1. LST ; - ListManager entry point
  1. D EN^VALM("PSA RETURN DRUG BATCH LIST")
  1. D FULL^VALM1
  1. G EXIT
  1. ;
  1. HDR ; - Header
  1. N LINE1,LINE2,LINE3,LINE4
  1. S LINE1="Pharmacy Location: "_$P(PSAPHLOC,"^",2)
  1. S LINE2="Date Range : "_$S(+PSADT:$$FMTE^XLFDT(+PSADT,"2Z"),1:"ALL")_$S(+$P(PSADT,"^",2):" THRU "_$$FMTE^XLFDT(+$P(PSADT,"^",2),"2Z"),1:"")
  1. K VALMHDR
  1. S VALMHDR(1)=LINE1,VALMHDR(2)=LINE2
  1. N HDR
  1. S HDR=" DATE DATE DATE TOTAL # OF"
  1. S $E(HDR,81)="" D INSTR^VALM1(IORVON_HDR_IOINORM,1,4)
  1. S HDR=" # BATCH # CREATED PICKED UP COMPLETED CREDIT RETURN CONTRACTOR ITEMS"
  1. S $E(HDR,81)="" D INSTR^VALM1(IORVON_HDR_IOINORM,1,5)
  1. Q
  1. ;
  1. INIT ; - Populates the Body section for ListMan
  1. K ^TMP("PSARDCBL",$J),^TMP("PSATMP",$J)
  1. S VALMCNT=0
  1. D SORT,SETLINE
  1. S VALMSG="Select the entry # to view or ?? for more actions"
  1. Q
  1. ;
  1. SORT ; - Sort according to the status to be displayed in ListMan
  1. N BAT,STA,SEQ,ARR,SDT,EDT,FDT
  1. S SDT=$P(PSADT,"^"),SDT=$S(+SDT>0:SDT,1:0)
  1. S EDT=$P(PSADT,"^",2),EDT=$S(+EDT>0:EDT_".9",1:9999999)
  1. F I=1:1:$L(PSASTA,",") S ARR($P(PSASTA,",",I))=""
  1. S (BAT,SEQ)=0
  1. F S BAT=$O(^PSD(58.35,PSALOC,"BAT",BAT)) Q:'BAT D
  1. . S STA=$$GET1^DIQ(58.351,BAT_","_PSALOC,1,"I") I STA="" Q
  1. . I '$D(ARR("ALL")),'$D(ARR(STA)) Q
  1. . S FDT=$$GET1^DIQ(58.351,BAT_","_PSALOC,3,"I")
  1. . I (SDT>FDT)!(FDT>EDT) Q
  1. . S ^TMP("PSATMP",$J,STA,BAT)=""
  1. Q
  1. ;
  1. SETLINE ; - Sets the line to be displayed in ListMan
  1. ; - Resetting list to NORMAL video attributes
  1. F I=1:1:$G(LASTLINE) D RESTORE^VALM10(I)
  1. ;
  1. N BAT,REC,STA,SEQ,FLDS,BATN,DTCR,DTPU,DTCP,TOTC,CMFR,NIT,LN,DSTA,CNT,GRPLN
  1. S (BAT,SEQ,CNT,PSACNT)=0,STA=""
  1. F S STA=$O(^TMP("PSATMP",$J,STA)) Q:STA="" D
  1. .S LN="",DSTA=$$EXTERNAL^DILFD(58.351,1,,STA),$E(LN,(41-($L(DSTA)\2)))=DSTA
  1. .S SEQ=SEQ+1,VALMCNT=VALMCNT+1,^TMP("PSARDCBL",$J,SEQ,0)=LN,GRPLN(SEQ)=DSTA
  1. .F S BAT=$O(^TMP("PSATMP",$J,STA,BAT)) Q:'BAT D
  1. . .D GETS^DIQ(58.351,BAT_","_PSALOC_",","*","IE","FLDS")
  1. . .K REC M REC=FLDS(58.351,BAT_","_PSALOC_",") K FLDS Q:'REC(.01,"E")
  1. . .S SEQ=SEQ+1,CNT=CNT+1,BATN=REC(.01,"E"),DTCR=$$FMTE^XLFDT($E(REC(3,"I"),1,7),"2Z"),DTPU=$$FMTE^XLFDT($E(REC(2,"I"),1,7),"2Z")
  1. . .S DTCP=$$FMTE^XLFDT($E(REC(9,"I"),1,7),"2Z")
  1. . .S CMFR=$E(REC(4,"E"),1,20)
  1. . .S TOTC=$J($P($$TOTCRE^PSARDCUT(PSALOC,BAT),"^",2),0,2)
  1. . .S (LN,NIT)=0 D NIT
  1. . .;Display Line
  1. . .S LN="",LN=$J(CNT,3),$E(LN,5)=BATN,$E(LN,15)=DTCR,$E(LN,25)=DTPU,$E(LN,35)=DTCP,$E(LN,45)=$J(TOTC,10),$E(LN,57)=CMFR,$E(LN,78)=$J(NIT,3)
  1. . .S ^TMP("PSARDCBL",$J,SEQ,0)=LN,VALMCNT=VALMCNT+1
  1. . .S ^TMP("PSARDCBL",$J,CNT,"BAT")=BAT
  1. ;
  1. S PSACNT=CNT
  1. ; - Saving NORMAL video attributes to be reset later
  1. I SEQ>$G(LASTLINE) D
  1. . F I=($G(LASTLINE)+1):1:SEQ D SAVE^VALM10(I)
  1. . S LASTLINE=SEQ
  1. ;
  1. I '$D(^TMP("PSARDCBL",$J)) D
  1. . S ^TMP("PSARDCBL",$J,7,0)=" No batches to display"
  1. . S VALMCNT=0
  1. D RV
  1. Q
  1. ;
  1. ; - Highlighting the group lines (order type and status)
  1. RV ;
  1. S LN=0 F S LN=$O(GRPLN(LN)) Q:'LN D
  1. . S DSTA=GRPLN(LN),CNT=41-($L(DSTA)\2)
  1. . D CNTRL^VALM10(LN,1,CNT-1,IOUON_IOINHI,IOINORM)
  1. . D CNTRL^VALM10(LN,CNT,$L(DSTA),IORVON_IOINHI,IORVOFF_IOINORM)
  1. . D CNTRL^VALM10(LN,CNT+$L(DSTA),81-CNT-$L(DSTA),IOUON_IOINHI,IOINORM)
  1. Q
  1. NIT ;
  1. F S LN=$O(^PSD(58.35,PSALOC,"BAT",BAT,"ITM",LN)) Q:'LN I $D(^(LN,0)) S NIT=NIT+1
  1. Q
  1. ;
  1. ADD ; - Add New Batch
  1. I '$D(^PSD(58.35,PSALOC)) D
  1. . N DIC,DA,X,DINUM
  1. . S DIC="^PSD(58.35,",(DINUM,X)=PSALOC,DIC(0)=""
  1. . K DD,DO D FILE^DICN D:Y<1 K DD,DO
  1. . . S $P(^PSD(58.35,PSALOC,0),"^")=PSALOC K DIK S DA=PSALOC,DIK="^PSD(58.35,",DIK(1)=.01 D EN^DIK K DIK
  1. N PSABAT,I,J,CMF,PSALK S (PSALK,PSABAT)=$E(DT,4,5)_$E(DT,2,3)
  1. L +^PSD(58.35,PSALOC,PSALK):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3) I '$T W $C(7),!!,"**** The File is Being Edited by Another User - Try Later ****",! H 3 G ADDQ
  1. S J=$O(^PSD(58.35,PSALOC,"BAT","B",PSABAT_"-999"),-1)
  1. S J=$S(PSABAT=$E(J,1,4):$P(J,"-",2),1:0)
  1. S PSABAT=PSABAT_"-"_$E(1000+(J+1),2,4)
  1. D FULL^VALM1 W !!," New Batch #: "_PSABAT
  1. K DIC,Y,X
  1. S DIC="^PSD(58.36,",DIC(0)="QEAM",DIC("A")=" RETURN CONTRACTOR: "
  1. S DIC("S")="I $S($P($G(^(0)),""^"",2):$P($G(^(0)),""^"",2)>DT,1:1)"
  1. S DIC("B")=$P($$DEFCTMF^PSARDCUT(),"^",2) K:DIC("B")="" DIC("B")
  1. D ^DIC I X=""!$D(DTOUT)!$D(DUOUT) K DTOUT,DUOUT D G ADDQ
  1. . W !!,"Batch not created - contracter/mfr not entered!",! N DIR S DIR(0)="E" D ^DIR
  1. S CMF=+Y
  1. W ! K DIR,X,Y S DIR(0)="Y",DIR("B")="NO",DIR("A")="Save Batch" D ^DIR K DIR G:Y<1 ADDQ
  1. D NOW^%DTC
  1. N DIC,DR,DA,X,DINUM,DLAYGO,DD,DO
  1. S DIC="^PSD(58.35,"_PSALOC_",""BAT"",",X=PSABAT,DIC(0)=""
  1. S DA(1)=PSALOC,DIC("DR")="1////"_"AP"_";3////"_%_";4////"_CMF
  1. K DD,DO,% D FILE^DICN K DD,DO L -^PSD(58.35,PSALOC,PSALK)
  1. ;
  1. D ;
  1. . N XQORM
  1. . D EN^PSARDCBA(PSALOC,+Y)
  1. ;
  1. ADDQ L -^PSD(58.35,PSALOC,PSALK) D INIT S VALMBCK="R"
  1. Q
  1. ;
  1. CMF ; - Add/Edit Contractor
  1. L +^PSD(58.36):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3) I '$T W $C(7),!!,"**** The File is Being Edited by Another User - Try Later ****",! H 3 G CMFQ
  1. D FULL^VALM1 W !
  1. N FQ F FQ=0:0 K DIC S DIC="^PSD(58.36,",DIC(0)="AEQLS",DLAYGO=58.36 D ^DIC K DIC Q:Y'>0 D
  1. . S DR=".01//^S X=$G(DIC_+Y_"",0"";1//",DIE="^PSD(58.36,",DA=+Y D ^DIE K DA,DIE,DR W !
  1. L -^PSD(58.36)
  1. CMFQ D INIT S VALMBCK="R"
  1. Q
  1. ;
  1. SEL ; - Select Item action
  1. I VALMCNT=0 S VALMSG="There are no batches to select!",VALMBCK="R" W $C(7) Q
  1. N PSASEL,BAT
  1. S PSASEL=+$P($P($G(Y(1)),"^",4),"=",2)
  1. I $G(PSASEL),'$D(^TMP("PSARDCBL",$J,PSASEL,"BAT")) D Q
  1. . S VALMSG="Invalid selection!",VALMBCK="R" W $C(7)
  1. I '$G(^TMP("PSARDCBL",$J,PSASEL,"BAT")) D I 'PSASEL S VALMBCK="R" Q
  1. . N DIR,Y,X,DIRUT,DIROUT
  1. . D FULL^VALM1 S DIR(0)="N^1:"_PSACNT,DIR("A")="SELECT RETURN BATCH"
  1. .
  1. . W ! D ^DIR I $D(DIRUT)!$D(DIROUT)!(Y'>0) S VALMBCK="R" Q
  1. . S PSASEL=+Y
  1. ;
  1. S BAT=$G(^TMP("PSARDCBL",$J,PSASEL,"BAT"))
  1. D ;
  1. . N XQORM
  1. . D EN^PSARDCBA(PSALOC,BAT),INIT
  1. ;
  1. S VALMBCK="R"
  1. Q
  1. ;
  1. CBAT ; Complete Batch
  1. I '$$CHKEY^PSARDCUT() Q ;security key check
  1. N PSAPHLOC,PSADTRNG,PSABASTS
  1. ;
  1. ; - Pharmacy location selection
  1. S PSAPHLOC=$$PHLOC^PSARDCUT() I 'PSAPHLOC Q
  1. ;
  1. ; - Date range selection
  1. W ! S PSADTRNG=$$DTRNG^PSARDCUT("T-90","T") I PSADTRNG="^" Q
  1. ;
  1. ; - Return drug credit status selection
  1. W ! S PSABASTS=$$STASEL^PSARDCUT() I PSABASTS="" Q
  1. ;
  1. ; - Call ListMan driver for Batch List Processing
  1. D EN(PSAPHLOC,PSADTRNG,PSABASTS)
  1. Q
  1. ;
  1. EXIT ;
  1. K ^TMP("PSARDCBL",$J),^TMP("PSATMP",$J),PSACNT
  1. Q
  1. ;
  1. HELP Q
  1. ;
  1. DELCMF(DA) ; check if cmf has entries tied to it
  1. I $G(DA)="" Q 1
  1. N PSADEL,I,J
  1. S (PSADEL,I)=0
  1. F S I=$O(^PSD(58.35,I)) Q:'I S J=0 F S J=$O(^PSD(58.35,I,"BAT",J)) Q:'J I $P($G(^PSD(58.35,I,"BAT",J,0)),"^",5)=+DA S PSADEL=1
  1. Q PSADEL