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

PSUOP1.m

Go to the documentation of this file.
  1. PSUOP1 ;BIR/CFL - PSU PBM Outpatient Pharmacy Data Collection for Version 6.0 ;25 AUG 1998
  1. ;;4.0;PHARMACY BENEFITS MANAGEMENT;;MARCH, 2005
  1. ;
  1. ;DBIAs
  1. ; Reference to ^PSRX( file #52 supported by DBIA(s) 465, 2512, 2513
  1. EN ;Entry to data collection
  1. K ^TMP($J)
  1. D CMOPARY,ADLOOP
  1. Q
  1. ADLOOP ;Loop through the AD cross reference
  1. S X1=PSUSDT,X2=-31
  1. D C^%DTC K %,%H,%T
  1. S PSUFDT=X
  1. F S PSUFDT=$O(^PSRX("AD",PSUFDT)) Q:PSUFDT=""!(PSUFDT\1>PSUEDT) D
  1. .S PSURXIEN=""
  1. .F S PSURXIEN=$O(^PSRX("AD",PSUFDT,PSURXIEN)) Q:PSURXIEN="" D
  1. ..S PSUFIL=""
  1. ..F S PSUFIL=$O(^PSRX("AD",PSUFDT,PSURXIEN,PSUFIL)) Q:PSUFIL="" D
  1. ...Q:'$D(^PSRX(PSURXIEN,0))
  1. ...K PSUTYP,PSUOP
  1. ...S PSUFLN=PSUFIL
  1. ...D COMVAR
  1. ...S PSUCMOP="N"
  1. ...;
  1. ...; check for CMOP data
  1. ...I $D(^PSRX(PSURXIEN,4,0)) D ARLOOP
  1. ...I PSUCMOP="Y" Q ; record filed in subroutine
  1. ...I (PSUFDT\1<PSUSDT) Q
  1. ...S PSUTYP=$S(PSUFLN=0:"N",1:"R")
  1. ...D GETDATA
  1. ...D SETREC^PSUOP3
  1. ..I $D(^PSRX(PSURXIEN,"P",0)),'$D(^XTMP(PSUOPSUB,"RXIEN",PSURXIEN)) D ADPLOOP
  1. K ^TMP($J)
  1. Q
  1. ARLOOP ;Check to see if CMOP Data exists for the reporting period
  1. I $D(^TMP($J,PSURXIEN,PSUFLN)) D
  1. .S PSUCMOP="Y"
  1. .S PSUTYP=$S(PSUFLN=0:"N",1:"R")
  1. .D GETDATA
  1. .I (PSURELDT="")!(PSURELDT<PSUSDT)!(PSURELDT>PSUEDT) Q
  1. .D SETREC^PSUOP3
  1. Q
  1. ADPLOOP ;Get data for partial fills
  1. S PSUPFN=0
  1. F S PSUPFN=$O(^PSRX(PSURXIEN,"P",PSUPFN)) Q:'PSUPFN D
  1. .S PSUCMOP="N"
  1. .D COMVAR
  1. .S PSUTYP="P"
  1. .D GETPART
  1. .Q:((PSUFD<PSUSDT)!(PSUFD>PSUEDT))
  1. .D SETREC^PSUOP3
  1. Q
  1. GETDATA ;Get the data for New Fills, Refills and Partial fills
  1. I PSUTYP="N" D
  1. .S PSUFD=PSUOP(22)
  1. .S PSUDS=PSUOP(8)
  1. .S PSUQTY=+PSUOP(7)
  1. .S PSUDRCT=PSUOP(17)
  1. .S PSURELDT=PSUOP(31)
  1. .I PSURELDT'="" S PSURELDT=PSURELDT\1
  1. .S PSUPRID=PSUOP(4)
  1. .S PSUMW=PSUOP(11)
  1. .S PSUDIVP=PSUOP(20)
  1. .S PSUNDC=""
  1. .I PSUCMOP="Y" D
  1. ..S PSUNDC=$$VALI^PSUTL(52.01,"PSURXIEN,PSUFLN",4)
  1. .S PSUNDC=$S(PSUNDC="":PSUOP(27),PSUNDC="":PSUDRUG(31),1:"No NDC")
  1. .D PROVDR^PSUOP3
  1. ;Get data for Refills
  1. I PSUTYP="R" D K REC
  1. .D GETS^PSUTL(52.1,"PSURXIEN,PSUFLN",".01;1;1.1;1.2;2;8;15;17","PSUREFIL","I")
  1. .D MOVEI^PSUTL("PSUREFIL")
  1. .S PSUFD=PSUREFIL(.01)
  1. .S PSUPRID=PSUREFIL(15)
  1. .S PSUMW=PSUREFIL(2)
  1. .S PSUDIVP=PSUREFIL(8)
  1. .S PSUDS=PSUREFIL(1.1)
  1. .S PSUQTY=+PSUREFIL(1)
  1. .S PSUDRCT=PSUREFIL(1.2)
  1. .S PSURELDT=PSUREFIL(17)
  1. .I PSURELDT'="" S PSURELDT=PSURELDT\1
  1. .S PSURXP=PSUOP(3)
  1. .S PSUDR=PSUOP(6)
  1. .S PSUNDC=""
  1. .I PSUCMOP="Y" D
  1. ..S PSUNDC=$$VALI^PSUTL(52.01,"PSURXIEN,PSUFLN",4)
  1. .I PSUNDC="" S PSUNDC=$$VALI^PSUTL(52.1,"PSURXIEN,PSUFLN",11)
  1. .I PSUNDC="" S PSUNDC=$S(PSUDRUG(31)'="":PSUDRUG(31),1:"No NDC")
  1. .D PROVDR^PSUOP3
  1. Q
  1. GETPART ;Get data for Partial Fills
  1. K PSUPART
  1. D GETS^PSUTL(52.2,"PSURXIEN,PSUPFN",".01;.02;.04;.041;.042;.09;6;8","PSUPART","I")
  1. D MOVEI^PSUTL("PSUPART")
  1. S PSUFD=PSUPART(.01)
  1. S PSUPRID=PSUPART(6)
  1. S PSUMW=PSUPART(.02)
  1. S PSUDIVP=PSUPART(.09)
  1. S PSUDS=PSUPART(.041)
  1. S PSUQTY=+PSUPART(.04)
  1. S PSUDRCT=PSUPART(.042)
  1. S PSURELDT=PSUPART(8)
  1. I PSURELDT'="" S PSURELDT=PSURELDT\1
  1. S PSUNDC=$$VALI^PSUTL(52.2,"PSURXIEN,PSUFLN",1)
  1. I PSUNDC="" S PSUNDC=$S(PSUDRUG(31)'="":PSUDRUG(31),1:"No NDC")
  1. D PROVDR^PSUOP3 ;Get shared variables
  1. Q
  1. COMVAR ;Get the common variables
  1. D GETS^PSUTL(52,PSURXIEN,".01;2;3;4;6;7;8;11;17;20;22;27;31","PSUOP","I")
  1. D MOVEI^PSUTL("PSUOP")
  1. S PSURXN=PSUOP(.01)
  1. S DFN=PSUOP(2) D PID^VADPT
  1. S PSUSSN=$TR(VA("PID"),"^-","")
  1. S PSUWPC="" ;Patient counseling only exists for version 7.0
  1. S PSUDR=PSUOP(6)
  1. S PSURXP=PSUOP(3)
  1. ;S PSUSIG=PSUOP(10)
  1. D GETDRUG^PSUOP3
  1. Q
  1. CMOPARY ;Loop through the "AR" cross reference and build CMOP array
  1. S X1=PSUSDT,X2=-1
  1. D C^%DTC K %,%H,%T
  1. S PSUCDT=X
  1. F S PSUCDT=$O(^PSRX("AR",PSUCDT)) Q:'PSUCDT D
  1. .S PSUCRX=""
  1. .F S PSUCRX=$O(^PSRX("AR",PSUCDT,PSUCRX)) Q:PSUCRX="" D
  1. ..S PSUCLN=""
  1. ..F S PSUCLN=$O(^PSRX("AR",PSUCDT,PSUCRX,PSUCLN)) Q:PSUCLN="" D
  1. ...S ^TMP($J,PSUCRX,PSUCLN)=""
  1. Q