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

PSOSPML2.m

Go to the documentation of this file.
  1. PSOSPML2 ;BIRM/MFR - View/Process Export Batch Listman Driver ;10/7/20 16:12
  1. ;;7.0;OUTPATIENT PHARMACY;**408,451,625**;DEC 1997;Build 42
  1. ;
  1. N BATCHIEN,DIR,DIRUT,DTOUT,DUOUT,X,DIC,VALM,VALMCNT,VALMHDR,VALMBCK,VALMSG,PSOLSTLN
  1. ;
  1. BAT ; Single Batch Selection
  1. W ! K DIC S DIC("A")="Export Batch #: ",DIC="^PS(58.42,",DIC(0)="QEAM"
  1. K BATCHIEN D ^DIC I X="^"!$D(DUOUT)!$D(DTOUT)!(Y<0) G EXIT
  1. S BATCHIEN=+Y
  1. ;
  1. D EN(BATCHIEN)
  1. ;
  1. G BAT
  1. ;
  1. EN(BATCHIEN) ; Entry point
  1. D EN^VALM("PSO SPMP VIEW/EXPORT BATCH")
  1. D FULL^VALM1
  1. Q
  1. ;
  1. HDR ; - Builds the Header section
  1. K VALMHDR
  1. S VALMHDR(1)="Batch #: "_$$GET1^DIQ(58.42,BATCHIEN,.01),$E(VALMHDR(1),17)="State: "_$$GET1^DIQ(58.42,BATCHIEN,1)
  1. S $E(VALMHDR(1),47)="Type: "_$$GET1^DIQ(58.42,BATCHIEN,2)
  1. S $E(VALMHDR(1),68)="Exported? "_$S($$GET1^DIQ(58.42,BATCHIEN,9,"I"):"YES",1:"NO")
  1. S VALMHDR(2)="Created on: "_$$GET1^DIQ(58.42,BATCHIEN,8)
  1. S $E(VALMHDR(2),47)="Exported on: "_$$GET1^DIQ(58.42,BATCHIEN,9)
  1. S VALMHDR(3)="File: "_$$GET1^DIQ(58.42,BATCHIEN,6)
  1. N LASTDR,LASTST
  1. S LASTDR=$O(^PS(58.42,BATCHIEN,"DR",99999),-1) I LASTDR D
  1. . S LASTST=$P($G(^PS(58.42,BATCHIEN,"DR",LASTDR,0)),"^")
  1. . I $D(LASTST),LASTST'="<blank>" S $E(VALMHDR(3),43)="Debug Reason: "_$E($P($G(^PS(58.42,BATCHIEN,"DR",LASTDR,0)),"^"),1,30)
  1. S VALMHDR(4)="Created by: "_$$GET1^DIQ(58.42,BATCHIEN,10,"E") ; PSO*7*625:PSU-14
  1. D SETHDR()
  1. Q
  1. ;
  1. SETHDR() ; - Displays the Header Line
  1. N HDR,ORD,POS
  1. ;
  1. S HDR=" #",$E(HDR,6)="Rx#",$E(HDR,21)="FILL",$E(HDR,27)="DRUG",$E(HDR,70)="SCH",$E(HDR,74)="TYPE"
  1. S $E(HDR,81)="" D INSTR^VALM1(IORVON_HDR_IOINORM,1,6) ; PSO*7*625:PSU-14 Add line to Y coordinate for VOID Created By
  1. Q
  1. ;
  1. INIT ; Builds the Body section
  1. N RXIEN,RXNUM,I,LINE,TYPE,NODE0,RX,COUNT,DRUGIEN,DRUGNAM,DRUGDEA,DSPLINE,FILL,RXNFLL,BATRXIEN
  1. ;
  1. K ^TMP("PSOSPSRT",$J)
  1. S BATRXIEN=0
  1. F S BATRXIEN=$O(^PS(58.42,BATCHIEN,"RX",BATRXIEN)) Q:'BATRXIEN D
  1. . S NODE0=$G(^PS(58.42,BATCHIEN,"RX",BATRXIEN,0))
  1. . S RXIEN=+NODE0,FILL=$P(NODE0,"^",2)
  1. . S ^TMP("PSOSPSRT",$J,$$GET1^DIQ(52,RXIEN,.01)_"^"_FILL)=BATRXIEN
  1. ;
  1. K ^TMP("PSOSPML2",$J) S VALMCNT=0,LINE=0
  1. S RXNFLL="",COUNT=0
  1. F S RXNFLL=$O(^TMP("PSOSPSRT",$J,RXNFLL)) Q:RXNFLL="" D
  1. . S BATRXIEN=+$G(^TMP("PSOSPSRT",$J,RXNFLL))
  1. . S NODE0=$G(^PS(58.42,BATCHIEN,"RX",BATRXIEN,0))
  1. . S RXIEN=+NODE0,FILL=$P(NODE0,"^",2),TYPE=$P(NODE0,"^",3)
  1. . S RXNUM=$$GET1^DIQ(52,RXIEN,.01)
  1. . S DRUGIEN=$$GET1^DIQ(52,RXIEN,6,"I")
  1. . S DRUGNAM=$E($$GET1^DIQ(50,DRUGIEN,.01),1,45)
  1. . S DRUGDEA=+$$GET1^DIQ(50,DRUGIEN,3)
  1. . S COUNT=COUNT+1
  1. . S DSPLINE=$J(COUNT,4)_" "_RXNUM,$E(DSPLINE,22)=$J(FILL,3)_" "_DRUGNAM
  1. . S $E(DSPLINE,70)=$J(DRUGDEA,3)
  1. . S $E(DSPLINE,74)=$S(TYPE="N":"NEW",TYPE="R":"REVISE",TYPE="V":"VOID",1:"")
  1. . D SETLN^PSOSPMU1("PSOSPML2",DSPLINE,0,0,0)
  1. . S ^TMP("PSOSPML2",$J,LINE,"RX")=RXIEN_"^"_FILL_"^"_TYPE
  1. S VALMCNT=LINE
  1. Q
  1. ;
  1. SEL ;Process selection of one entry
  1. N PSOSEL,XQORM,ORD,PSOTITLE,RXINFO,LINE
  1. S PSOSEL=+$P(XQORNOD(0),"=",2) I 'PSOSEL S VALMSG="Invalid selection!",VALMBCK="R" Q
  1. S RXINFO=$G(^TMP("PSOSPML2",$J,PSOSEL,"RX"))
  1. I 'RXINFO S VALMSG="Invalid selection!",VALMBCK="R" Q
  1. S PSOTITLE=VALM("TITLE")
  1. D ; DO command used to preserve variables PSOTITLE and LINE
  1. . N PSOTITLE,LINE D EN^PSOSPML4(+RXINFO,$P(RXINFO,"^",2),$P(RXINFO,"^",3))
  1. S VALMBCK="R",VALM("TITLE")=$G(PSOTITLE)
  1. D INIT,HDR
  1. Q
  1. ;
  1. EXP(MODE) ; Export Batch
  1. N DIR,Y,DUOUT,DIRUT,STATEIEN,PSOASVER,PSOTXRTS,QUIT,RUNMODE,LASTDR,LASTST,NEWR,FLUSH
  1. D FULL^VALM1 S VALMBCK="R"
  1. ;
  1. S STATEIEN=$$GET1^DIQ(58.42,BATCHIEN,1,"I")
  1. S PSOASVER=$$GET1^DIQ(58.41,STATEIEN,1,"I")
  1. S PSOTXRTS=+$$GET1^DIQ(58.41,STATEIEN,12,"I")
  1. ;
  1. S QUIT=0,RUNMODE="F"
  1. I MODE="EXPORT",($$GET1^DIQ(58.42,BATCHIEN,2,"I")'="VD"!PSOTXRTS) D I QUIT Q
  1. . W ! K DIRUT,DUOUT,DIR
  1. . S DIR(0)="SA^B:Background;F:Foreground;D:Debug Mode (Foreground)"
  1. . S DIR("A",1)="Indicate whether the transmission should be queued to run on the Background"
  1. . S DIR("A",2)="via TaskMan, on the Foreground (Terminal Screen) or in Debug Mode (Foreground)"
  1. . S DIR("A",3)="which shows the sFTP (secure File Transfer) connection steps."
  1. . S DIR("A",3)=""
  1. . S DIR("A",4)=" Select one of the following:"
  1. . S DIR("A",5)=""
  1. . S DIR("A",6)=" B Background"
  1. . S DIR("A",7)=" F Foreground"
  1. . S DIR("A",8)=" D Debug Mode (Foreground)"
  1. . S DIR("A",9)=""
  1. . S DIR("A")="Running Mode: ",DIR("B")="F",DIR("??")="^D RMHELP^PSOSPML2"
  1. . D ^DIR I $D(DTOUT)!$D(DIRUT) S QUIT=1 Q
  1. . S RUNMODE=Y
  1. . W ! K DIRUT,DUOUT,DIR
  1. . S DIR("A",1)="The Batch will be transmitted to the state of "_$$GET1^DIQ(58.42,BATCHIEN,1)_"."
  1. . S DIR("A",2)="",DIR("A")="Confirm",DIR(0)="Y",DIR("B")="N"
  1. . D ^DIR I $G(DTOUT)!$G(DUOUT)!'Y S QUIT=1 Q
  1. . I RUNMODE'="B" W ?40,"Please wait..."
  1. . I RUNMODE="D",($$GET1^DIQ(58.42,BATCHIEN,2,"I")'="RX") D DBUG(BATCHIEN) I QUIT=1 Q
  1. ;
  1. I (MODE="VIEW")!(($$GET1^DIQ(58.42,BATCHIEN,2,"I")="VD")&'PSOTXRTS) D D ^%ZIS K %ZIS Q:POP U IO
  1. . D EXMSG($S(MODE="VIEW":0,1:1)) W ! K %ZIS,IOP,POP,ZTSK S %ZIS="QM"
  1. ;
  1. ; If export batch type is VOID ONLY, and TRANSMIT RTS is OFF, just display for capture
  1. I (MODE="VIEW")!(($$GET1^DIQ(58.42,BATCHIEN,2,"I")="VD")&'PSOTXRTS) D
  1. . W ! D EXPORT^PSOSPMUT(BATCHIEN,"VIEW")
  1. . D ^%ZISC
  1. E D
  1. . I RUNMODE="B" D Q
  1. . . N ZTRTN,ZTIO,ZTDESC,ZTDTH,ZTSK
  1. . . S ZTRTN="EXPORT^PSOSPMUT("_BATCHIEN_",""EXPORT"",1,1)",ZTIO=""
  1. . . S ZTDESC="State Prescription Monitoring Program (SPMP) Transmission"
  1. . . S ZTDTH=$$NOW^XLFDT()
  1. . . D ^%ZTLOAD W:$D(ZTSK) !!,"Export Background Job Queued to Run.",$C(7),! K ZTSK
  1. . D EXPORT^PSOSPMUT(BATCHIEN,"EXPORT",0,$S(RUNMODE="D":1,1:0),$G(FLUSH))
  1. ;
  1. ; If exporting manually (web upload), update export fields (assumes user will upload file)
  1. I MODE="EXPORT",$$GET1^DIQ(58.42,BATCHIEN,2,"I")="VD",'PSOTXRTS D
  1. . D ^%ZISC N DIE,DA,DR S DIE="^PS(58.42,",DA=BATCHIEN
  1. . S DR="6///<Manual Web Upload>7////"_DUZ_";9///"_$$NOW^XLFDT()
  1. . D ^DIE
  1. ;
  1. K DIR S DIR("A")="Press Return to continue",DIR(0)="E" D ^DIR
  1. D HDR
  1. Q
  1. ;
  1. EXIT ;
  1. K ^TMP("PSOSPML2",$J)
  1. Q
  1. ;
  1. HELP ; Listman HELP entry-point
  1. Q
  1. ;
  1. EXMSG(RTSONLY) ;
  1. W !!?5,"Before continuing, set up your terminal to capture the ASAP"
  1. W !?5,"formatted data. On some terminals, this can be done by clicking"
  1. W !?5,"on the 'File' menu above, then click on 'Logging...' and check"
  1. W !?5,"'Logging on' and 'Disk'."
  1. W !!?5,"Note: To avoid undesired wrapping of the data saved to the"
  1. W !?5," file, please enter '0;256;9999' at the 'DEVICE:' prompt."
  1. I '$G(RTSONLY) Q
  1. W !!?5,"*********************** IMPORTANT ******************************"
  1. W !?5,"When you upload this file to the state website, make sure to"
  1. W !?5,"select the correct import option, usually called ""Back Records"
  1. W !?5,"Out of the System"", to avoid reporting duplicate records for the"
  1. W !?5,"patients."
  1. W !?5,"*****************************************************************"
  1. Q
  1. ;
  1. RMHELP ; Running Mode Help Text
  1. W !!?5,"Choose one of the following transmission modes:"
  1. W !!?5,"Background: Transmission runs in the background via Taskman. This option"
  1. W !?5," will help you simulate the same transmission mode used by the"
  1. W !?5," Scheduled Nightly Transmissions."
  1. W !!?5,"Foreground: Transmission runs and displays the steps to your terminal"
  1. W !?5," screen."
  1. W !!?5,"Debug Mode: This is similar to the Foreground mode. The difference is"
  1. W !?5," that the sFTP command used to transfer the file will be run"
  1. W !?5," in 'debug mode'. This option is useful when troubleshooting"
  1. W !?5," transmission problems."
  1. Q
  1. ;
  1. DBUG(BATCH) ; flush and debug reason prompt
  1. I '$D(^XUSEC("PSO SPMP ADMIN",DUZ)) S FLUSH=0 Q
  1. S FLUSH=0
  1. K DIRUT,DUOUT,DIR
  1. W ! S DIR("A")="Do you want to flush the known hosts key",DIR(0)="Y",DIR("B")="N"
  1. D ^DIR I $G(DTOUT)!$G(DUOUT) S QUIT=1 Q
  1. S FLUSH=$S(Y:1,1:0) I 'FLUSH S NEWR="<blank>" D F102 Q
  1. W ! K DIRUT,DUOUT,DIR
  1. N DIR,DIC,DA,X,Y,DLAYGO,DO,DD
  1. RD S DIR("A")="Reason for Debug",DIR(0)="58.42102,.01" D ^DIR K DIR I $D(DTOUT)!$D(DUOUT) S QUIT=1 Q
  1. I Y="" W !,$C(7),"This is a required response. Enter '^' to exit" G RD
  1. S NEWR=Y
  1. W !
  1. F102 ; add new entry in the DEBUG REASON field #102
  1. S DLAYGO=58.42102,DIC(0)="L",X=NEWR,DA(1)=BATCHIEN,DIC="^PS(58.42,"_BATCHIEN_",""DR"",",DIC("DR")="1////"_DUZ_";3///"_$$NOW^XLFDT()
  1. D FILE^DICN K DIC,DLAYGO
  1. W !
  1. Q