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

APSPESR1.m

Go to the documentation of this file.
  1. APSPESR1 ; IHS/MSC/MGH - AUTO-FINISH REPORT ;04-Jun-2013 08:24;DU
  1. ;;7.0;IHS PHARMACY MODIFICATIONS;**1011,1016**;Sep 23, 2004;Build 74
  1. ;
  1. EN ;EP
  1. N APSPBD,APSPED,APSPDIV,APSPRTYP,APSPQ,APSPDSUB,APSPDCLS,APSPSRT,APSPSRT2
  1. N APSPDCT,APSPDCTN,APSPDRG,APSPBDF,APSPEDF,APSPOUT,APSPGRP
  1. S APSPDIV="",APSPDRG="",APSPQ=0,APSPDSUB=0
  1. W @IOF
  1. W !!,"Auto-finish failure report by Division"
  1. D ASKDATES^APSPUTIL(.APSPBD,.APSPED,.APSPQ,DT,DT)
  1. Q:APSPQ
  1. S APSPBDF=$P($TR($$FMTE^XLFDT(APSPBD,"5Z"),"@"," "),":",1,2)
  1. S APSPEDF=$P($TR($$FMTE^XLFDT(APSPED,"5Z"),"@"," "),":",1,2)
  1. S APSPBD=APSPBD-.01,APSPED=APSPED+.99
  1. S APSPDIV=$$DIR^APSPUTIL("Y","Would you like all divisions","Yes",,.APSPQ)
  1. Q:APSPQ
  1. I APSPDIV D
  1. .S APSPDIV="*"
  1. E D Q:APSPQ
  1. .S APSPDIV=$$GETIEN^APSPUTIL(4,"Select Division: ",.APSPQ)
  1. ;Get primary sort criteria
  1. S APSPSRT=+$$DIR^APSPUTIL("S^1:Date;2:Drug;3:Prescriber","Primary sort",,,.APSPQ)
  1. Q:APSPQ
  1. I APSPSRT=1 D
  1. .S APSPSRT2=+$$DIR^APSPUTIL("S^1:Drug;2:Prescriber","Within Date,sort by",,,.APSPQ)
  1. Q:APSPQ
  1. I APSPSRT=2 D
  1. .S APSPSRT2=+$$DIR^APSPUTIL("S^1:Date;2:Prescriber","Within Drug,sort by",,,.APSPQ)
  1. Q:APSPQ
  1. I APSPSRT=3 D
  1. .S APSPSRT2=+$$DIR^APSPUTIL("S^1:Date;2:Drug","Within Prescriber,sort by",,,.APSPQ)
  1. Q:APSPQ
  1. ;Ask about divisions
  1. S APSPGRP=0
  1. I APSPDIV="*" S APSPGRP=+$$DIR^APSPUTIL("S^1:Yes;0:No","Display by divison?",,,.APSPQ)
  1. Q:APSPQ
  1. ;Ask about output
  1. S APSPOUT=0
  1. S APSPOUT=+$$DIR^APSPUTIL("S^1:Detailed;2:Columnar;3:Delimited","Output format:",,,.APSPQ)
  1. Q:APSPQ
  1. D DEV
  1. Q
  1. DEV ;
  1. N XBRP,XBNS
  1. S XBRP="OUT^APSPESR1"
  1. S XBNS="APS*"
  1. D ^XBDBQUE
  1. Q
  1. OUT ;EP
  1. K ^TMP("APSPESR",$J)
  1. D FIND($G(APSPBD),$G(APSPED))
  1. D PRINT
  1. Q
  1. ;
  1. FIND(APSPBD,APSPED) ;EP
  1. N RXIEN,ACTIEN,RTSDT,FILLDT,A0,DIV,PRV,CNT,LOC,AUTO,DRUG,DRGNM,HRN,PDATE,PAT,PNAME
  1. S RXIEN=0,RTSDT=APSPBD,CNT=0
  1. F S RTSDT=$O(^APSPAF("B",RTSDT)) Q:'+RTSDT!(RTSDT>APSPED) D
  1. .F S RXIEN=$O(^APSPAF("B",RTSDT,RXIEN)) Q:'+RXIEN D
  1. ..Q:'$D(^APSPAF(RXIEN,0)) ; Prescription must have a zero node
  1. ..;Only want non-autofinished meds
  1. ..S AUTO=$P($G(^APSPAF(RXIEN,0)),U,3)
  1. ..Q:+AUTO
  1. ..;Get the order
  1. ..S ORDER=$P($G(^APSPAF(RXIEN,0)),U,2)
  1. ..Q:'+ORDER
  1. ..;Now we have prescriptions that were not auto-finished but have a pharmacy defined
  1. ..;This is what we want so we can find the other variables.
  1. ..S LOC=$P($G(^OR(100,ORDER,0)),U,10)
  1. ..S LOC=$P(LOC,";",1)
  1. ..Q:'+LOC
  1. ..S DIV=$P($G(^SC(LOC,0)),U,4)
  1. ..D SET(DIV,ORDER)
  1. Q
  1. ;
  1. PRINT ;EP
  1. N APSPPG,DFLG
  1. S (APSPPG,DFLG)=0
  1. D HDR
  1. D PRINT1
  1. W:'DFLG !,"No data found..."
  1. Q
  1. ;
  1. PRINT1 ;EP
  1. N DIV,SUB1,SUB2,SUB3,SUB4,VAL
  1. I APSPDIV="*"&(APSPGRP=1) D PRINT2
  1. E D PRINT3
  1. Q
  1. PRINT2 ;Print out by division
  1. N DIV,SUB1,SUB2,VAL,DIVCT,TOT,NUM
  1. S TOT=0
  1. S DIV=0 F S DIV=$O(^TMP("APSPESR",$J,DIV)) Q:'DIV D
  1. .S DIVCT=0
  1. .I APSPDIV="*" W !,$$GET1^DIQ(4,DIV,.01) D PRINT5
  1. .S SUB1=0 F S SUB1=$O(^TMP("APSPESR",$J,DIV,SUB1)) Q:'SUB1 D
  1. ..D HDR1(SUB1)
  1. ..S SUB2=0 F S SUB2=$O(^TMP("APSPESR",$J,DIV,SUB1,SUB2)) Q:'SUB2 D
  1. ...D HDR2(SUB2)
  1. ...S NUM=0 F S NUM=$O(^TMP("APSPESR",$J,DIV,SUB1,SUB2,NUM)) Q:'NUM D
  1. ....S VAL=$G(^TMP("APSPESR",$J,DIV,SUB1,SUB2,NUM))
  1. ....D PRINT4(VAL)
  1. ....S DFLG=1
  1. ....S TOT=TOT+1,DIVCT=DIVCT+1
  1. .W !,"Division Count: "_DIVCT D PRINT5
  1. W !,"TOTAL Count: "_TOT
  1. Q
  1. PRINT3 ;No divisional counts
  1. N SUB1,SUB2,VAL,TOT,DIV
  1. S TOT=0
  1. S SUB1=0 F S SUB1=$O(^TMP("APSPESR",$J,SUB1)) Q:'SUB1 D
  1. .D HDR1(SUB1)
  1. .S SUB2=0 F S SUB2=$O(^TMP("APSPESR",$J,SUB1,SUB2)) Q:'SUB2 D
  1. ..D HDR2(SUB2)
  1. ..S DIV=0 F S DIV=$O(^TMP("APSPESR",$J,SUB1,SUB2,DIV)) Q:'DIV D
  1. ...S NUM=0 F S NUM=$O(^TMP("APSPESR",$J,SUB1,SUB2,DIV,NUM)) Q:'NUM D
  1. ....S DFLG=1
  1. ....S VAL=$G(^TMP("APSPESR",$J,SUB1,SUB2,DIV,NUM))
  1. ....D PRINT4(VAL)
  1. ....S TOT=TOT+1
  1. W !,"TOTAL CT: "_TOT
  1. ; Check page length
  1. PRINT5 ;EP
  1. N DIR
  1. Q:$E(IOST)'="C"
  1. I $Y+4>IOSL D
  1. .K DIRUT,DFOUT,DLOUT,DTOUT,DUOUT
  1. .S DIR(0)="E" D ^DIR
  1. .D HDR
  1. Q
  1. ; Set data into ^TMP global for output
  1. SET(DIV,ORDER) ;EP
  1. N LSTDSPDT,NODE0,X,Y,ITEM,PRV,PDAT,HRN,PAT,DRUGNM,DRUG,DRUG2,DPT,PNAME
  1. S NODE0=^OR(100,ORDER,0)
  1. S DRUGNM=""
  1. S DPT=$P($P(NODE0,U,2),";",1)
  1. F X=0:0 S X=$O(^OR(100,ORDER,8,X)) Q:'+X D
  1. .I X=1 D
  1. ..S PRV=$P($G(^OR(100,ORDER,8,1,0)),U,5)
  1. ..S PNAME=$$GET1^DIQ(200,PRV,.01,"E")
  1. ..S PDAT=$P($G(^OR(100,ORDER,8,1,0)),U,6)
  1. S ITEM=0,DRGNM=""
  1. F S ITEM=$O(^OR(100,ORDER,.1,ITEM)) Q:'+ITEM D
  1. .S DRUG=$P($G(^OR(100,ORDER,.1,ITEM,0)),U,1)
  1. .S DRUG2=$$GET1^DIQ(101.43,DRUG,.01,"E")
  1. .S DRGNM=$S(DRGNM'="":DRGNM_","_DRUG2,1:DRUG2)
  1. S HRN=$$HRN^AUPNPAT(DPT,DIV)
  1. S PAT=$$GET1^DIQ(2,DPT,.01,"E")
  1. ;Sort these items
  1. N A,B,C,D
  1. S A=DIV
  1. I APSPSRT=1 D
  1. .I APSPSRT2=1 S B=RTSDT,C=DRUG
  1. .I APSPSRT2=2 S B=RTSDT,C=PRV
  1. I APSPSRT=2 D
  1. .I APSPSRT2=1 S B=DRUG,C=RTSDT
  1. .I APSPSRT2=2 S B=DRUG,C=PRV
  1. I APSPSRT=3 D
  1. .I APSPSRT2=1 S B=PRV,C=RTSDT
  1. .I APSPSRT2=2 S B=PRV,C=DRUG
  1. S CNT=CNT+1
  1. I APSPDIV="*"&(APSPGRP=1) D
  1. .S ^TMP("APSPESR",$J,A,B,C,ORDER)=ORDER_U_HRN_U_DRGNM_U_PDAT_U_PNAME_U_PAT
  1. E D
  1. .S ^TMP("APSPESR",$J,B,C,A,ORDER)=ORDER_U_HRN_U_DRGNM_U_PDAT_U_PNAME_U_PAT
  1. Q
  1. HDR ;EP
  1. W @IOF
  1. S APSPPG=APSPPG+1
  1. W !,"Auto-Finish Failure Report",?35,$P($TR($$FMTE^XLFDT($$NOW^XLFDT,"5Z"),"@"," "),":",1,2),?(IOM-10),"Page: "_APSPPG
  1. W !,"Report Criteria: Orders which did not auto-finshed"
  1. W !,?5,"Inclusive Dates: "_APSPBDF_" to "_APSPEDF
  1. W !,?5,"Division: "_$S(APSPDIV:$$GET1^DIQ(4,APSPDIV,.01),1:"All")
  1. W !,?5,"Primary Sort: "_$S(APSPSRT=1:"Date",APSPSRT=2:"Drug",APSPSRT=3:"Prescriber",1:"")
  1. W !,$TR($J("",80)," ","-")
  1. D HDR3
  1. Q
  1. ;
  1. HDR1(SRT1) ;EP
  1. N LINE
  1. Q:APSPOUT=3
  1. I APSPSRT=1 S LINE=$$FMTE^XLFDT(SRT1)
  1. I APSPSRT=2 S LINE=$$GET1^DIQ(101.43,SRT1,.01,"E")
  1. I APSPSRT=3 S LINE=$$GET1^DIQ(200,SRT1,.01,"E")
  1. W !,?5,LINE
  1. D PRINT5
  1. Q
  1. HDR2(SRT2) ;EP
  1. Q:APSPOUT=3
  1. I APSPSRT=1 D
  1. .I APSPSRT2=1 D
  1. ..S LINE=$$GET1^DIQ(101.43,SRT2,.01,"E")
  1. ..W !,?10,LINE
  1. ..D DASH
  1. .I APSPSRT2=2 D
  1. ..S LINE=$$GET1^DIQ(200,SRT2,.01,"E")
  1. ..W !,?10,LINE
  1. ..D DASH
  1. I APSPSRT=2 D
  1. .I APSPSRT2=1 D
  1. ..S LINE=$$FMTE^XLFDT(SRT2)
  1. ..W !,?10,LINE
  1. ..D DASH
  1. .I APSPSRT2=2 D
  1. ..S LINE=$$GET1^DIQ(200,SRT2,.01,"E")
  1. ..W !,?10,LINE
  1. ..D DASH
  1. I APSPSRT=3 D
  1. .I APSPSRT2=1 D
  1. ..S LINE=$$FMTE^XLFDT(SRT2)
  1. ..W !,?10,LINE
  1. ..D DASH
  1. .I APSPSRT2=2 D
  1. ..S LINE=$$GET1^DIQ(50,SRT2,.01,"E")
  1. ..W !,?10,LINE
  1. ..D DASH
  1. Q
  1. HDR3 ;Print out header
  1. I APSPOUT=2 D
  1. .W !,?12,"Order",?20,"HRN",?30,"Date",?45,"Provider",?65,"Item"
  1. I APSPOUT=3 D
  1. .W !,"Order"_U_"Patient"_U_"HRN"_U_"Date"_U_"Provider"_U_"Orderable Item"
  1. Q
  1. ;Print the line
  1. PRINT4(DATA) ;EP
  1. N WP,FILE,IENS,FIELD,X,Y
  1. I APSPOUT=1 D
  1. .W !,?12,"Order: "_$P(DATA,U,1),?30,"Patient: "_$P(DATA,U,6),?60,"HRN: "_$P(DATA,U,2)
  1. .D PRINT5
  1. .W !,?12,"Date: "_$$FMTE^XLFDT($P(DATA,U,4)),?40,"Provider: "_$P(DATA,U,5)
  1. .D PRINT5
  1. .W !,?12,"Text:"
  1. .D PRINT5
  1. .S FILE=100.008,FIELD=.1
  1. .S IENS="1,"_ORDER_","
  1. .S X=$$GET1^DIQ(FILE,IENS,FIELD,"","WP")
  1. .S Y="" F S Y=$O(WP(Y)) Q:Y="" D
  1. ..W !,?12,$E($G(WP(Y)),1,60)
  1. ..D PRINT5
  1. ..I $L(WP(Y))>60 D
  1. ...W !,?12,$E($G(WP(Y)),61,$L($G(WP(Y))))
  1. ...D PRINT5
  1. .W !
  1. I APSPOUT=2 D
  1. .W !,?12,$P(DATA,U,1),?20,$P(DATA,U,2),?30,$E($$FMTE^XLFDT($P(DATA,U,4)),1,12),?45,$E($P(DATA,U,5),1,18),?65,$E($P(DATA,U,3),1,15)
  1. I APSPOUT=3 D
  1. .W !,$P(DATA,U,1)_U_$P(DATA,U,6)_U_$P(DATA,U,2)_U_$$FMTE^XLFDT($P(DATA,U,4))_U_$P(DATA,U,5)_U_$P(DATA,U,3)
  1. Q
  1. ;
  1. DASH ;EP
  1. N DASH
  1. W ! F DASH=1:1:IOM W "-"
  1. W !
  1. Q