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

ECXPHAI.m

Go to the documentation of this file.
  1. ECXPHAI ;MBS/BAH - Pharmacy DSS Extract IV Holding File Report ;3/5/24 11:53
  1. ;;3.0;DSS EXTRACTS;**190**;Dec 22, 1997;Build 36
  1. ;
  1. EN ;entry point from option
  1. N STOP,REPORT,DIVISION,SDATE,EDATE,X,TMP,ECXPORT,CNT,TXTYPE,ECXPAT,ECRUN,DATE,Y
  1. S STOP=0
  1. ; get today's date
  1. D NOW^%DTC S DATE=X,Y=$E(%,1,12) D DD^%DT S ECRUN=Y K %DT
  1. ;Select transaction type
  1. D TXTYPE Q:STOP
  1. ;Select date range
  1. D DATES Q:STOP
  1. ;Select patient
  1. D PATIENT Q:STOP
  1. S ECXPORT=$$EXPORT^ECXUTL1 Q:ECXPORT=-1 I $G(ECXPORT) D Q
  1. .K ^TMP($J,"ECXPORT")
  1. .S ^TMP($J,"ECXPORT",0)="TRANSACTION TYPE^ORDER NUMBER^ORDER DATE^DRUG^DATE/TIME^ADDITIVE STRENGTH^ADDITIVE STRENGTH UNITS^SOLUTION VOLUME^COST^PATIENT",CNT=0
  1. .D GETDATA
  1. .D DETAIL
  1. .D EXPDISP^ECXUTL1
  1. .K ^TMP($J,"ECXPORT"),^TMP($J,"ECXPHAI")
  1. ;Queue Report
  1. N ZTDESC,ZTIO,ZTSAVE
  1. F X="TXTYPE","SDATE","EDATE","ECRUN","ECXPAT","STOP" S ZTSAVE(X)=""
  1. S ZTIO=""
  1. S ZTDESC="DSS Extract IV Holding File Report"
  1. W !!,"This report requires 132 column format."
  1. D EN^XUTMDEVQ("EN1^ECXPHAI",ZTDESC,.ZTSAVE)
  1. Q
  1. ;
  1. EN1 ;Init variables
  1. N PAGE,LN
  1. S PAGE=0
  1. D HEADER I STOP D EXIT Q
  1. D GETDATA I STOP D EXIT Q
  1. I '$O(^TMP($J,"ECXPHAI",0)) D Q
  1. .W !
  1. .W !,"************************************************************"
  1. .W !,"* NOTHING TO REPORT FOR IV HOLDING FILE REPORT *"
  1. .W !,"************************************************************"
  1. .D WAIT
  1. .D EXIT
  1. D DETAIL I STOP D EXIT Q
  1. EXIT Q
  1. ;
  1. TXTYPE ;Prompt for transaction type
  1. ; This code will pull the options from the file #728.113 field #5 DD to ensure compatibility
  1. ; in case of any future change to that field.
  1. N DDTYPES,DIR,X,Y
  1. D FIELD^DID(728.113,5,,"SET OF CODES","DDTYPES")
  1. S DIR(0)="S"_U_DDTYPES("SET OF CODES")_"A:ALL"
  1. S DIR("A")="Select Transaction Type"
  1. S DIR("B")="A"
  1. D ^DIR
  1. I $D(DIRUT) S STOP=1 Q
  1. S TXTYPE=+Y
  1. Q
  1. ;
  1. DATES ;Prompt for start date
  1. N DIR,DIRUT,X,Y
  1. W !!,"Note that the start and end dates for the IV Holding File Report refer to the",!,"DATE/TIME field, not the ORDER DATE field."
  1. S DIR(0)="D^:NOW:EX"
  1. S DIR("A")="Enter Report Start Date"
  1. S DIR("B")=$$FMTE^XLFDT($$NOW^XLFDT,"1D")
  1. D ^DIR
  1. I $D(DIRUT) S STOP=1 Q
  1. S SDATE=Y
  1. ;Prompt for end date
  1. K DIR,DIRUT,X,Y
  1. S DIR(0)="D^:NOW:EX"
  1. S DIR("A")="Enter Report End Date"
  1. S DIR("B")=$$FMTE^XLFDT($$NOW^XLFDT,"1D")
  1. D ^DIR
  1. I $D(DIRUT) S STOP=1 Q
  1. S EDATE=Y
  1. Q
  1. ;
  1. PATIENT ;Prompt for patient
  1. N DIC
  1. S ECXPAT=0
  1. S DIC=2,DIC(0)="AME",DIC("A")="Select PATIENT (to run for all patients, leave blank):"
  1. D ^DIC
  1. S:Y>0 ECXPAT=+Y
  1. Q
  1. ;
  1. S PAGE=$G(PAGE)+1,$P(LN,"=",132)=""
  1. W @IOF
  1. W !,"IV Holding File Report",?121,$$RJ^XLFSTR("PAGE: "_PAGE,10)
  1. W !,"Start Date: "_$$FMTE^XLFDT(SDATE),?90,"Report Run Date/Time: "_ECRUN
  1. W !,"End Date: "_$$FMTE^XLFDT(EDATE),!
  1. W !,"Transaction Type Date/Time Order Number Order Date Patient"
  1. W !," Drug Additive Strength Additive Strength Units Solution Volume Cost"
  1. W !,LN
  1. Q
  1. ;
  1. GETDATA ;Get data from IV Holding File
  1. N DATE,FILE,DFN,ERROR,ENDATE,ECDATA,DTEI,DA,ON
  1. S DATE=SDATE-.1,ENDATE=EDATE+.999,FILE=728.113
  1. K ^TMP($J,"ECXPHAI")
  1. S DTEI=$S(ECXPORT:"I",1:"E")
  1. F S DATE=$O(^ECX(FILE,"A",DATE)) Q:'DATE!(DATE>ENDATE) D Q:STOP
  1. .S DFN=0 F S DFN=$O(^ECX(FILE,"A",DATE,DFN)) Q:'DFN D Q:STOP
  1. ..;If user selected a patient to filter for, ensure only those records go through
  1. ..Q:+$G(ECXPAT)&(DFN'=$G(ECXPAT))
  1. ..;Filter out test patients or bad records
  1. ..N ECXPAT ;Have to new here b/c it's being killed in the below call for some reason
  1. ..S ERROR=$$PAT^ECXNUT(DFN) Q:ERROR
  1. ..S ON=0 F S ON=$O(^ECX(FILE,"A",DATE,DFN,ON)) Q:'ON D Q:STOP
  1. ...S DA=0 F S DA=$O(^ECX(FILE,"A",DATE,DFN,ON,DA)) Q:'DA D Q:STOP
  1. ....N ECPAT,X,ECPNAM
  1. ....Q:TXTYPE'="0"&($$GET1^DIQ(FILE,DA_",",5,"I")'=TXTYPE)
  1. ....K ECDATA D GETS^DIQ(FILE,DA_",","*","EI","ECDATA") Q:'$D(ECDATA)
  1. ....S ECDATA="ECDATA("_FILE_","""_DA_","")"
  1. ....S X=$$PAT^ECXUTL3(DFN,"","1",.ECPAT)
  1. ....S ECPNAM=$E($G(ECPAT("NAME")))_$E($G(ECPAT("SSN")),6,9)
  1. ....;Trans. Type^Order Number^Order Date^Drug^Date/Time^Add. Str^Add. Str. Units^Sol Vol^Cost^Patient
  1. ....;S ^TMP($J,"ECXPHAI",DATE,DA)=@ECDATA@(5,"E")_U_ON_U_@ECDATA@(14,DTEI)_U_@ECDATA@(3,"E")_U_@ECDATA@(4,DTEI)_U_@ECDATA@(6,"E")_U_@ECDATA@(7,"E")_U_@ECDATA@(8,"E")_U_@ECDATA@(12,"E")_U_ECPNAM
  1. ....S ^TMP($J,"ECXPHAI",DATE,DA)=@ECDATA@(5,"E")_U_ON_U_$$FMTE^XLFDT(@ECDATA@(14,"I"),"2Z")_U_@ECDATA@(3,"E")_U_$$FMTE^XLFDT(@ECDATA@(4,"I"),"2Z")_U_@ECDATA@(6,"E")_U_@ECDATA@(7,"E")_U_@ECDATA@(8,"E")_U_@ECDATA@(12,"E")_U_ECPNAM
  1. Q
  1. ;
  1. DETAIL ;Print report
  1. N CUR
  1. S CUR=$NA(^TMP($J,"ECXPHAI"))
  1. F S CUR=$Q(@CUR) Q:$QS(CUR,2)'="ECXPHAI" D Q:STOP
  1. .I $G(ECXPORT) D Q
  1. ..S CNT=$G(CNT)+1,^TMP($J,"ECXPORT",CNT)=@CUR
  1. ..;S $P(^TMP($J,"ECXPORT",CNT),U,3)=$$FMTE^XLFDT($P(^TMP($J,"ECXPORT",CNT),U,3),2)
  1. ..;S $P(^TMP($J,"ECXPORT",CNT),U,5)=$$FMTE^XLFDT($P(^TMP($J,"ECXPORT",CNT),U,5),2)
  1. .W !,$P(@CUR,U),?18,$P(@CUR,U,5),?41,$P(@CUR,U,2),?55,$P(@CUR,U,3),?73,$P(@CUR,U,10)
  1. .W !,?1,$P(@CUR,U,4),?43,$P(@CUR,U,6),?64,$P(@CUR,U,7),?90,$P(@CUR,U,8),?110,$P(@CUR,U,9),!
  1. .I $Y>(IOSL-5) D WAIT Q:STOP D HEADER
  1. Q
  1. ;
  1. WAIT ;End of page logic
  1. ;Input ; None
  1. ;Output ; STOP - Flag indicating if printing should continue
  1. ; 1 = Stop 0 = Continue
  1. ;
  1. S STOP=0
  1. ;CRT - Prompt for continue
  1. I $E(IOST,1,2)="C-" D Q
  1. .F Q:$Y>(IOSL-3) W !
  1. .N DIR,X,Y,DTOUT,DUOUT,DIRUT,DIROUT
  1. .S DIR(0)="E"
  1. .D ^DIR
  1. .S STOP=$S(Y'=1:1,1:0)
  1. ;Background task - check taskman
  1. S STOP=$$S^%ZTLOAD()
  1. I STOP D
  1. .W !,"*********************************************"
  1. .W !,"* PRINTING OF REPORT STOPPED AS REQUESTED *"
  1. .W !,"*********************************************"
  1. Q