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

PSOSPML5.m

Go to the documentation of this file.
  1. PSOSPML5 ;BIRM/MFR - SPMP Information Disclosure Report ;04/10/13
  1. ;;7.0;OUTPATIENT PHARMACY;**408**;DEC 1997;Build 100
  1. ;
  1. N %DT,BATIEN,DIR,DIRUT,X,Y,DIC,DTOUT,DUOUT,PSOFROM,PSOTO,PSOST,PSOPT
  1. ;
  1. ; - Ask for FROM DATE
  1. S %DT(0)=-DT,%DT="AEP",%DT("A")=" BEGIN DATE: "
  1. W ! D ^%DT I Y<0!($D(DTOUT)) G EXIT
  1. S PSOFROM=Y\1-.00001
  1. ;
  1. ; - Ask for TO DATE
  1. K %DT S %DT(0)=PSOFROM+1\1,%DT="AEP",%DT("B")="TODAY",%DT("A")=" END DATE: "
  1. W ! D ^%DT I Y<0!($D(DTOUT)) G EXIT
  1. S PSOTO=Y\1+.99999
  1. ;
  1. ; - Selection of STATE to print on the Report
  1. N DIC,X,I,Y K PSOST S PSOST=""
  1. W !!,?5,"You may select a single or multiple STATES,"
  1. W !,?5,"or enter ^ALL to select all STATES.",!
  1. S DIC("B")=$$GET1^DIQ(5,+$O(^PS(58.41,0)),.01)
  1. S DIC=5,DIC(0)="QEAM",DIC("A")=" Select STATE: "
  1. F D ^DIC Q:Y<0 S PSOST(+Y)="" K DIC("B") S DIC("A")=" Another STATE: "
  1. I X="^ALL" S PSOST="ALL"
  1. I $G(PSOST)'="ALL",$D(DUOUT)!($D(DTOUT)) Q
  1. I $G(PSOST)'="ALL",'$O(PSOST(0)) Q
  1. ;
  1. ; - Selection of PATIENTS to print on the Report
  1. N DIC,X,I,Y K PSOPT S PSOPT=""
  1. W !!,?5,"You may select a single or multiple PATIENTS,"
  1. W !,?5,"or enter ^ALL to select all PATIENTS.",!
  1. S DIC(0)="QEAM",DIC("A")=" Select PATIENT: ",DIC("B")="^ALL"
  1. F D EN^PSOPATLK S Y=PSOPTLK Q:+Y<1 S PSOPT(+Y)="" K PSOPTLK S DIC("A")=" Another PATIENT: "
  1. I Y="^ALL" K PSOPT S PSOPT="ALL"
  1. I $G(PSOPT)'="ALL",$G(PSOPTLK)="^" Q
  1. I $G(PSOPT)'="ALL",'$O(PSOPT(0)) Q
  1. ;
  1. W !!,"Please wait..."
  1. ;
  1. D EN(PSOFROM,PSOTO,.PSOST,.PSOPT)
  1. ;
  1. G EXIT
  1. ;
  1. EN(PSOFROM,PSOTO,PSOST,PSOPT) ; Entry point
  1. D EN^VALM("PSO SPMP DISCLOSURE REPORT")
  1. D FULL^VALM1
  1. Q
  1. ;
  1. HDR ; - Builds the Header section
  1. S VALMHDR(1)="Date Range: "_$$FMTE^XLFDT(PSOFROM+1\1,2)_" - "_$$FMTE^XLFDT(PSOTO\1,2)
  1. S VALMHDR(2)="State(s): "_$S($G(PSOST)="ALL":"ALL",$O(PSOST($O(PSOST(0)))):"Multiple",1:$$GET1^DIQ(5,+$O(PSOST(0)),.01))
  1. S $E(VALMHDR(2),40)="Patient(s): "_$S($G(PSOPT)="ALL":"ALL",$O(PSOPT($O(PSOPT(0)))):"Multiple",1:$$GET1^DIQ(2,+$O(PSOPT(0)),.01))
  1. S VALMHDR(3)=""
  1. S VALMHDR(4)=" # DT DISC PATIENT Rx# DRUG"
  1. Q
  1. ;
  1. INIT ; Builds the Body section
  1. N RXCNT,BATDT,I,LINE,TYPE,NODE0,RX,COUNT,DRUGIEN,DRUGNAM,DRUGDEA,DSPLINE,FILL,RECTYPE,DFN,L4SSN
  1. N BATRXIEN,DISCDT,PATNAM,PATIEN,RXIEN,RXNFLL,RXNUM,STATE
  1. ;
  1. K ^TMP("PSOSPSRT",$J)
  1. S BATDT=PSOFROM
  1. F S BATDT=$O(^PS(58.42,"AD",BATDT)) Q:'BATDT!(BATDT>PSOTO) D
  1. . S BATIEN=0 F S BATIEN=$O(^PS(58.42,"AD",BATDT,BATIEN)) Q:'BATIEN D
  1. . . S STATE=$$GET1^DIQ(58.42,BATIEN,1,"I")
  1. . . S DISCDT=$P(^PS(58.42,BATIEN,0),"^",10) I 'DISCDT Q
  1. . . I $G(PSOST)'="ALL",'$D(PSOST(STATE)) Q
  1. . . S BATRXIEN=0 F S BATRXIEN=$O(^PS(58.42,BATIEN,"RX",BATRXIEN)) Q:'BATRXIEN D
  1. . . . S NODE0=$G(^PS(58.42,BATIEN,"RX",BATRXIEN,0))
  1. . . . S RXIEN=+NODE0,FILL=$P(NODE0,"^",2),RECTYPE=$P(NODE0,"^",3),PATIEN=$$GET1^DIQ(52,RXIEN,2,"I")
  1. . . . I $G(PSOPT)'="ALL",'$D(PSOPT(PATIEN)) Q
  1. . . . S ^TMP("PSOSPSRT",$J,$$GET1^DIQ(5,STATE,.01),$$GET1^DIQ(52,RXIEN,2)_"^"_PATIEN,RXIEN_"^"_FILL_"^"_BATIEN)=DISCDT\1
  1. ;
  1. K ^TMP("PSOSPML5",$J) S (VALMCNT,LINE,RXCNT,COUNT)=0
  1. S (STATE,PATNAM,RXNFLL)="",COUNT=0
  1. F S STATE=$O(^TMP("PSOSPSRT",$J,STATE)) Q:STATE="" D
  1. . D SETLN^PSOSPMU1("PSOSPML5","Disclosed to:"_STATE,0,0,0)
  1. . D SETLN^PSOSPMU1("PSOSPML5","Info Disclosed: Name, DOB, SSN, Prescription Data, Home Address, Phone Number",0,0,0)
  1. . F S PATNAM=$O(^TMP("PSOSPSRT",$J,STATE,PATNAM)) Q:PATNAM="" D
  1. . . S DFN=$P(PATNAM,"^",2) D DEM^VADPT S L4SSN=$P($P(VADM(2),"^",2),"-",3)
  1. . . F S RXNFLL=$O(^TMP("PSOSPSRT",$J,STATE,PATNAM,RXNFLL)) Q:RXNFLL="" D
  1. . . . S DISCDT=^TMP("PSOSPSRT",$J,STATE,PATNAM,RXNFLL)
  1. . . . S RXIEN=+RXNFLL,FILL=$P(RXNFLL,"^",2),RECTYPE=$P(RXNFLL,"^",3)
  1. . . . S RXNUM=$$GET1^DIQ(52,RXIEN,.01)
  1. . . . S DRUGNAM=$$GET1^DIQ(52,RXIEN,6)
  1. . . . S COUNT=COUNT+1
  1. . . . S DSPLINE=$J(COUNT,4)_" "_$$FMTE^XLFDT(DISCDT,"2Y"),$E(DSPLINE,14)=$E($P(PATNAM,"^"),1,20)_"("_L4SSN_")"
  1. . . . S $E(DSPLINE,41)=RXNUM,$E(DSPLINE,56)=$E(DRUGNAM,1,25)
  1. . . . D SETLN^PSOSPMU1("PSOSPML5",DSPLINE,0,0,0)
  1. . . . S ^TMP("PSOSPML5",$J,COUNT,"RX")=RXIEN_"^"_FILL_"^"_RECTYPE
  1. . D SETLN^PSOSPMU1("PSOSPML5"," ",0,0,0)
  1. I '$D(^TMP("PSOSPML5",$J)) D
  1. . D SETLN^PSOSPMU1("PSOSPML5","No data found for the date range selected.",0,0,0)
  1. S VALMCNT=LINE
  1. Q
  1. ;
  1. SEL ;Process selection of one entry
  1. N PSOSEL,XQORM,ORD,TITLE,RXINFO,LINE
  1. S PSOSEL=+$P(XQORNOD(0),"=",2) I 'PSOSEL S VALMSG="Invalid selection!",VALMBCK="R" Q
  1. S RXINFO=$G(^TMP("PSOSPML5",$J,PSOSEL,"RX"))
  1. I 'RXINFO S VALMSG="Invalid selection!",VALMBCK="R" Q
  1. S TITLE=VALM("TITLE")
  1. D EN^PSOSPML4(+RXINFO,$P(RXINFO,"^",2),$P(RXINFO,"^",3))
  1. S VALMBCK="R",VALM("TITLE")=TITLE
  1. D INIT,HDR
  1. Q
  1. ;
  1. EXIT ;
  1. K ^TMP("PSOSPML5",$J)
  1. Q
  1. ;
  1. HELP ; Listman HELP entry-point
  1. Q