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

APSPCDI1.m

Go to the documentation of this file.
  1. APSPCDI1 ; IHS/MSC/PLS - CRITICAL DRUG INTERACTION REPORT ;28-Nov-2011 14:53;PLS
  1. ;;7.0;IHS PHARMACY MODIFICATIONS;**1013**;Sep 23, 2004;Build 33
  1. ;
  1. Q
  1. PRINT ;EP
  1. N APSPPG,DFLG,NEWPG
  1. S (APSPPG,DFLG,NEWPG)=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,SUB5,VAL,LP,LSTFDT
  1. S LSTFDT=0
  1. S DIV=0 F S DIV=$O(^TMP($J,"XREF",DIV)) Q:'DIV D
  1. .I APSPDIV="*" W !!!,"Pharmacy Division: "_$$GET1^DIQ(59,DIV,.01),! ;W !,"|"_$$GET1^DIQ(59,DIV,.01)_"|" D PRINT3()
  1. .I APSPSORT=1 D ; Drug Name
  1. ..S SUB1="" F S SUB1=$O(^TMP($J,"XREF",DIV,"DRUG",SUB1)) Q:SUB1="" D ; Drug Name
  1. ...S SUB2=0 F S SUB2=$O(^TMP($J,"XREF",DIV,"DRUG",SUB1,SUB2)) Q:'SUB2 D ; Fill Date
  1. ....S SUB3=0 F S SUB3=$O(^TMP($J,"XREF",DIV,"DRUG",SUB1,SUB2,SUB3)) Q:'SUB3 D ; Data node
  1. .....D PRINT2(^TMP($J,"DATA",SUB3))
  1. .....S DFLG=1
  1. .I APSPSORT=2 D ; Fill Date
  1. ..S SUB1=0 F S SUB1=$O(^TMP($J,"XREF",DIV,"FDT",SUB1)) Q:'SUB1 D ; Fill Date
  1. ...S SUB2="" F S SUB2=$O(^TMP($J,"XREF",DIV,"FDT",SUB1,SUB2)) Q:SUB2="" D ; Drug Name
  1. ....S SUB3=0 F S SUB3=$O(^TMP($J,"XREF",DIV,"FDT",SUB1,SUB2,SUB3)) Q:'SUB3 D ; Data node
  1. .....D PRINT2(^TMP($J,"DATA",SUB3))
  1. .....S DFLG=1
  1. .I APSPSORT=3 D ; Patient Name
  1. ..S SUB1="" F S SUB1=$O(^TMP($J,"XREF",DIV,"PAT",SUB1)) Q:'$L(SUB1) D ; Patient Name
  1. ...S SUB2=0 F S SUB2=$O(^TMP($J,"XREF",DIV,"PAT",SUB1,SUB2)) Q:'SUB2 D ; Fill Date
  1. ....S SUB3="" F S SUB3=$O(^TMP($J,"XREF",DIV,"PAT",SUB1,SUB2,SUB3)) Q:'$L(SUB3) D ; Drug Name
  1. .....S SUB4=0 F S SUB4=$O(^TMP($J,"XREF",DIV,"PAT",SUB1,SUB2,SUB3,SUB4)) Q:'SUB4 D ; Data node
  1. ......D PRINT2(^TMP($J,"DATA",SUB4))
  1. ......S DFLG=1
  1. .I APSPSORT=4 D ; Provider
  1. ..S SUB1="" F S SUB1=$O(^TMP($J,"XREF",DIV,"PRV",SUB1)) Q:'$L(SUB1) D ; Provider
  1. ...S SUB2="" F S SUB2=$O(^TMP($J,"XREF",DIV,"PRV",SUB1,SUB2)) Q:'$L(SUB2) D ; Drug Name
  1. ....S SUB3=0 F S SUB3=$O(^TMP($J,"XREF",DIV,"PRV",SUB1,SUB2,SUB3)) Q:'SUB3 D ; Fill Date
  1. .....S SUB4=0 F S SUB4=$O(^TMP($J,"XREF",DIV,"PRV",SUB1,SUB2,SUB3,SUB4)) Q:'SUB4 D ; Data node
  1. ......D PRINT2(^TMP($J,"DATA",SUB4))
  1. ......S DFLG=1
  1. Q
  1. ; Print the line
  1. PRINT2(DATA) ; EP -
  1. N RX,DFN,HRN
  1. I $P(DATA,U,3)="APSP" D
  1. .D APSPINV(+DATA)
  1. E D
  1. .S RX=+DATA
  1. .S DFN=$$GET1^DIQ(52,RX,2,"I")
  1. .S HRN=$$HRN^AUPNPAT(DFN,DUZ(2))
  1. .D PRINT3($P(DATA,U,16)+1)
  1. .W !,$P($TR($$FMTE^XLFDT($P(DATA,U,2),"5Z"),"@"," "),":",1,2),?14,$P(DATA,U,9),?20,$E($$GET1^DIQ(2,DFN,.01),1,16),?38,HRN,?48,$$GET1^DIQ(52,RX,.01),?60,$P(DATA,U,8)
  1. .D INTOUT(RX)
  1. D PRINT3() ;check page length
  1. Q
  1. ; Check page length and optionally print blank line
  1. ;
  1. PRINT3(ADD) ;EP
  1. S ADD=$G(ADD,0)
  1. D:($Y+9+ADD)>IOSL HDR
  1. Q
  1. ;
  1. HDR ;EP
  1. W:APSPPG @IOF
  1. S APSPPG=APSPPG+1,NEWPG=1
  1. W !,"Critical Drug Interaction Report",?(IOM-28),$P($TR($$FMTE^XLFDT($$NOW^XLFDT,"5Z"),"@"," "),":",1,2),?(IOM-10),"Page: "_APSPPG
  1. W !,"Report Criteria:"
  1. W !,?5,"Inclusive Dates: "_APSPBDF_" to "_APSPEDF
  1. W !,?5,"Pharmacy Division: "_$S(APSPDIV:$$GET1^DIQ(59,APSPDIV,.01),1:"All")
  1. W !,?5,"Sorted by: "_$S(APSPSORT=1:"Drug Name, Fill Date",APSPSORT=2:"Fill Date then Drug Name",APSPSORT=3:"Patient then Fill Date",4:"Prescriber then Drug Name, Fill Date",1:"Unknown")
  1. I APSPSORT=3,APSPPAT W !,?7,"Patient sort restricted to ",$$GET1^DIQ(2,APSPPAT,.01)
  1. I APSPSORT=4,APSPPRV W !,?7,"Prescriber sort restricted to ",$$GET1^DIQ(200,APSPPRV,.01)
  1. D HDR1
  1. Q
  1. ;
  1. HDR1 ;EP
  1. D DASH
  1. W "Date Disp.",?14,"Type",?20,"Patient",?40,"HRN",?48,"Rx Number",?60,"Drug Name"
  1. W !,?37,"Overriding Provider"
  1. W !,?7,"Overriding Reason"
  1. W !,"Cause"
  1. D DASH
  1. Q
  1. ;
  1. DASH ;EP
  1. N DASH
  1. W ! F DASH=1:1:IOM W "-"
  1. W !
  1. Q
  1. ; Output order check information
  1. INTOUT(RX) ;EP-
  1. N IEN,CNT,ORDID,IENS,CAUSE
  1. S (IEN,CNT)=0
  1. S ORDID=$P(^PSRX(RX,"OR1"),U,2)
  1. F S IEN=$O(^OR(100,ORDID,9,IEN)) Q:'IEN D
  1. .Q:$$GET1^DIQ(100.8,$P($G(^OR(100,+ORDID,9,IEN,0)),U),.01)'="CRITICAL DRUG INTERACTION"
  1. .S IENS=IEN_","_ORDID_","
  1. .W !,?5,$$GET1^DIQ(100.09,IENS,.01),?37,$$GET1^DIQ(100.09,IENS,.05)
  1. .W !,?7,$$GET1^DIQ(100.09,IENS,.04)
  1. .S CAUSE=$P($G(^OR(100,+ORDID,9,IEN,1)),":",2)
  1. .I $L(CAUSE) D
  1. ..W !,$S($L(CAUSE)>IOM:$E(CAUSE,1,IOM-3)_"...",1:CAUSE)
  1. Q
  1. ; Output APSP Intervention
  1. APSPINV(IEN) ;EP-
  1. N FN,DFN,NODE0
  1. S FN=9009032.4
  1. S NODE0=^APSPQA(32.4,IEN,0)
  1. S DFN=$P(NODE0,U,2)
  1. W !,?5,$P($TR($$FMTE^XLFDT($P(NODE0,U),"5Z"),"@"," "),":",1,2),?21,$$GET1^DIQ(2,DFN,.01),?51,$$HRN^AUPNPAT(DFN,$$GET1^DIQ(59,$P(NODE0,U,16),100,"I")),?58,$$GET1^DIQ(FN,IEN,.05)
  1. W !,?7,$$GET1^DIQ(200,$P(NODE0,U,4),.01),?49,$$GET1^DIQ(FN,IEN,.08)
  1. W !,"Critical Drug Interaction over-ridden in RPMS Pharmacy Package"
  1. Q