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

PSNVCR1.m

Go to the documentation of this file.
  1. PSNVCR1 ;BIR/RTR-VISTA COMPARISON REPORT CONTINUED ; 10 January 2017
  1. ;;4.0;NATIONAL DRUG FILE;**513**; 30 Oct 98;Build 53
  1. ;
  1. ;
  1. FILE ;File Selection
  1. ;Sets selected file in PSNVRFIL array as PSNVRFIL(#)=File Name
  1. K DIR,Y S DIR(0)="SA^A:ALL;S:SPECIFIC"
  1. S DIR("?",1)="Enter 'A' to see changes made in all of the audited National Drug File files,"
  1. S DIR("?")="enter 'S' to select specific National Drug File files to see changes."
  1. S DIR("A")="Select (A)ll or (S)pecific Files: "
  1. D ^DIR I $D(DIRUT) S PSNVROUT=1 Q
  1. S PSNVRANS=Y D SELFILE(PSNVRANS) I PSNVROUT Q
  1. I PSNVRANS="A" W !!,"Since all files were selected, all audited fields will be shown on the report." S PSNVRSEE="A"
  1. Q
  1. ;
  1. ;
  1. SELFILE(PSNVRSET) ; Set File array
  1. N PSNVRLP,PSNVRLPC,PSNVRLAR,PSNVRLST,PSNVRLTH,PSNVRNUM
  1. S PSNVRLAR(1)="50.416^DRUG INGREDIENTS"
  1. S PSNVRLAR(2)="50.6^VA GENERIC"
  1. S PSNVRLAR(3)="50.605^VA DRUG CLASS"
  1. S PSNVRLAR(4)="50.606^DOSAGE FORM"
  1. S PSNVRLAR(5)="50.607^DRUG UNITS"
  1. S PSNVRLAR(6)="50.608^PACKAGE TYPE"
  1. S PSNVRLAR(7)="50.609^PACKAGE SIZE"
  1. S PSNVRLAR(8)="50.64^VA DISPENSE UNIT"
  1. S PSNVRLAR(9)="50.67^NDC/UPN"
  1. S PSNVRLAR(10)="50.68^VA PRODUCT"
  1. S PSNVRLAR(11)="55.95^DRUG MANUFACTURER"
  1. S PSNVRLAR(12)="56^DRUG INTERACTION"
  1. I PSNVRSET="A" D Q
  1. .S PSNVRLP="" F S PSNVRLP=$O(PSNVRLAR(PSNVRLP)) Q:'PSNVRLP S PSNVRFIL($P(PSNVRLAR(PSNVRLP),"^"))=($P(PSNVRLAR(PSNVRLP),"^",2))
  1. AGAIN ;Re-prompt file selection
  1. W !!?4,"1) "_$P(PSNVRLAR(1),"^")_" "_$P(PSNVRLAR(1),"^",2)
  1. W !?4,"2) "_$P(PSNVRLAR(2),"^")_" "_$P(PSNVRLAR(2),"^",2)
  1. W !?4,"3) "_$P(PSNVRLAR(3),"^")_" "_$P(PSNVRLAR(3),"^",2)
  1. W !?4,"4) "_$P(PSNVRLAR(4),"^")_" "_$P(PSNVRLAR(4),"^",2)
  1. W !?4,"5) "_$P(PSNVRLAR(5),"^")_" "_$P(PSNVRLAR(5),"^",2)
  1. W !?4,"6) "_$P(PSNVRLAR(6),"^")_" "_$P(PSNVRLAR(6),"^",2)
  1. W !?4,"7) "_$P(PSNVRLAR(7),"^")_" "_$P(PSNVRLAR(7),"^",2)
  1. W !?4,"8) "_$P(PSNVRLAR(8),"^")_" "_$P(PSNVRLAR(8),"^",2)
  1. W !?4,"9) "_$P(PSNVRLAR(9),"^")_" "_$P(PSNVRLAR(9),"^",2)
  1. W !?3,"10) "_$P(PSNVRLAR(10),"^")_" "_$P(PSNVRLAR(10),"^",2)
  1. W !?3,"11) "_$P(PSNVRLAR(11),"^")_" "_$P(PSNVRLAR(11),"^",2)
  1. W !?3,"12) "_$P(PSNVRLAR(12),"^")_" "_$P(PSNVRLAR(12),"^",2),!
  1. K DIR,Y S DIR(0)="LA^1:12"
  1. S DIR("A")="Select from the above list of files: "
  1. S DIR("?",1)="Select from entries 1 through 12. Multiple entries can be selected by using"
  1. S DIR("?")="commas and dashes, such as 1,2,5-7 to select entries 1, 2, 5, 6, and 7."
  1. D ^DIR I $D(DIRUT) S PSNVROUT=1 Q
  1. S PSNVRLST=Y
  1. S PSNVRLPC=0 F PSNVRLP=1:1:$L(PSNVRLST) I $E(PSNVRLST,PSNVRLP)="," S PSNVRLPC=PSNVRLPC+1
  1. W !!,"You have selected the following files:",!
  1. F PSNVRLP=1:1:PSNVRLPC D
  1. .S PSNVRNUM=$P(PSNVRLST,",",PSNVRLP)
  1. .S PSNVRFIL($P(PSNVRLAR(PSNVRNUM),"^"))=$P(PSNVRLAR(PSNVRNUM),"^",2),PSNVRLTH=$L($P(PSNVRLAR(PSNVRNUM),"^"))
  1. .W !?3,$P(PSNVRLAR(PSNVRNUM),"^")_$S(PSNVRLTH=6:" ",PSNVRLTH=5:" ",PSNVRLTH=4:" ",1:" ")_$P(PSNVRLAR(PSNVRNUM),"^",2)
  1. W ! K DIR,Y S DIR(0)="Y",DIR("A")="Is this correct",DIR("B")="Y" D ^DIR
  1. I $D(DTOUT)!($D(DUOUT)) S PSNVROUT=1 Q
  1. I Y'=1 K PSNVRFIL G AGAIN
  1. Q
  1. ;
  1. ;
  1. DATE ;Date selection
  1. N %DT,X,X1,X2,%H,PSNVR90
  1. S X1=DT,X2=-90 D C^%DTC S PSNVR90=X
  1. W ! S %DT="AEPTX",%DT("A")="Enter Start Date: ",%DT(0)=PSNVR90 D ^%DT I $D(DTOUT)!(Y<0) S PSNVROUT=1 Q
  1. S PSNVRBEG=Y S X1=PSNVRBEG,X2=-1 D C^%DTC S PSNVRBEG=X_.9999
  1. K %DT,X S (PSNVRBEG,%DT(0))=Y
  1. S %DT="AEPTX",%DT("A")="Enter End Date: " D ^%DT I $D(DTOUT)!(Y<0) S PSNVROUT=1 Q
  1. S PSNVREND=Y I '$P(PSNVREND,".",2) S PSNVREND=PSNVREND_.9999
  1. Q
  1. ;
  1. ;
  1. SUMM ;Prompt for full listing or summary
  1. W ! K DIR,Y S DIR(0)="SA^F:Full Listing;S:Summary totals"
  1. S DIR("?",1)="Enter 'F' to see old and new values of all of the audited fields,"
  1. S DIR("?")="enter 'S' to only see total numbers of records changed."
  1. S DIR("A")="Select (F)ull Listing or (S)ummary totals: "
  1. D ^DIR I $D(DIRUT) S PSNVROUT=1 Q
  1. S PSNVRSUM=Y
  1. Q
  1. ;
  1. ;
  1. PMI ;Prompt for PMI and Warning Lablels if summary was selected in prior prompt
  1. W ! K DIR,Y S DIR(0)="Y",DIR("A")="Include counts for PMI and Warning Labels",DIR("B")="Y"
  1. S DIR("?",1)="Enter 'Y' to include PMI and Warning Label counts,"
  1. S DIR("?")="enter 'N' to not include these counts."
  1. D ^DIR
  1. I $D(DTOUT)!($D(DUOUT)) S PSNVROUT=1 Q
  1. I Y=1 S PSNVRPMI=1
  1. Q
  1. ;
  1. ;
  1. TYPE ;Prompt for report format or delimited list
  1. W ! K DIR,Y S DIR(0)="SA^P:Print List;D:Delimited File"
  1. S DIR("?",1)="Enter 'P' to see the output in a report format,"
  1. S DIR("?")="enter 'D' for a delimited list that can be exported to excel."
  1. S DIR("A")="Select (P)rint List or (D)elimited File: "
  1. D ^DIR I $D(DIRUT) S PSNVROUT=1 Q
  1. S PSNVRTYP=Y
  1. Q
  1. ;
  1. ;
  1. SELECT(PSNVRNM) ;Select fields from each file selected
  1. N PSNVRSHO,PSNVRHPC,PSNVRHPL,PSNVRHNM,PSNVRAB1,PSNVRAB2,PSNVRAB3,PSNVRABN
  1. S PSNVRAGN=0 W ! K DIR,Y S DIR(0)="LA^1:"_PSNVRNM
  1. S DIR("A")="Select from the above list of fields: "
  1. S DIR("?",1)="Select from entries 1 through "_PSNVRNM_". Multiple entries can be selected by using"
  1. S DIR("?")="commas and dashes."
  1. D ^DIR I $D(DIRUT) S PSNVROUT=1 Q
  1. S PSNVRSHO=Y
  1. S PSNVRHPC=0 F PSNVRHPL=1:1:$L(PSNVRSHO) I $E(PSNVRSHO,PSNVRHPL)="," S PSNVRHPC=PSNVRHPC+1
  1. W !!,"You have selected the following fields:",!
  1. F PSNVRHPL=1:1:PSNVRHPC Q:PSNVROUT D
  1. .I ($Y+5)>IOSL D YN^PSNVCR Q:PSNVROUT W @IOF
  1. .S PSNVRHNM=$P(PSNVRSHO,",",PSNVRHPL)
  1. .W !?3,$P(PSNVRDAT(PSNVRHNM),"^",3)
  1. Q:PSNVROUT
  1. W ! K DIR,Y S DIR(0)="Y",DIR("A")="Is this correct",DIR("B")="Y" D ^DIR
  1. I $D(DTOUT)!($D(DUOUT)) S PSNVROUT=1 K PSNVRAR Q
  1. I Y'=1 S PSNVRAGN=1 Q
  1. F PSNVRHPL=1:1:PSNVRHPC D
  1. .S PSNVRHNM=$P(PSNVRSHO,",",PSNVRHPL)
  1. .S PSNVRABN=$P(PSNVRDAT(PSNVRHNM),"^",4)
  1. .S PSNVRAB1=$P(PSNVRABN,";;"),PSNVRAB2=$P(PSNVRABN,";;",2),PSNVRAB3=$P(PSNVRABN,";;",3)
  1. .I 'PSNVRAB3 S PSNVRAR(PSNVRAB1,PSNVRAB2)=$P(PSNVRDAT(PSNVRHNM),"^") Q
  1. .S PSNVRAR(PSNVRAB1,PSNVRAB2,PSNVRAB3)=$P(PSNVRDAT(PSNVRHNM),"^")
  1. Q
  1. ;
  1. ;
  1. DRM ;Set Fields for Drug Manufacturer (#55.95) File
  1. I PSNVRSL="A" D Q
  1. .S PSNVRSL1=55.95 D
  1. ..F PSNVRSL2=0:0 S PSNVRSL2=$O(^DD(PSNVRSL1,"AUDIT",PSNVRSL2)) Q:'PSNVRSL2 D
  1. ...S PSNVRAR(55.95,PSNVRSL2)=PSNVRSL1
  1. K PSNVRDAT S PSNVRCN=0,PSNVRSL1=55.95
  1. F PSNVRSL2=0:0 S PSNVRSL2=$O(^DD(PSNVRSL1,"AUDIT",PSNVRSL2)) Q:'PSNVRSL2 D
  1. .S PSNVRCN=PSNVRCN+1,PSNVRDAT(PSNVRCN)=PSNVRSL1_"^"_PSNVRSL2
  1. .S PSNVRSUB=PSNVRDAT(PSNVRCN),$P(PSNVRDAT(PSNVRCN),"^",3)=$$GET1^DID($P(PSNVRSUB,"^"),$P(PSNVRSUB,"^",2),,"LABEL")
  1. .S $P(PSNVRDAT(PSNVRCN),"^",4)=55.95_";;"_PSNVRSL2
  1. DRMN ;Redisplay for selection
  1. W @IOF
  1. W !?5,"Audited fields from the Drug Manufacturer (#55.95) File:",! S PSNVRFL=0
  1. D AUDF
  1. Q:PSNVROUT
  1. I 'PSNVRFL D MESS,YN Q
  1. D SELECT(PSNVRCN) I PSNVRAGN G DRMN
  1. Q
  1. ;
  1. ;
  1. DRI ;Set Fields for Drug Interaction (#56) File
  1. I PSNVRSL="A" D Q
  1. .S PSNVRSL1=56 D
  1. ..F PSNVRSL2=0:0 S PSNVRSL2=$O(^DD(PSNVRSL1,"AUDIT",PSNVRSL2)) Q:'PSNVRSL2 D
  1. ...S PSNVRAR(56,PSNVRSL2)=PSNVRSL1
  1. K PSNVRDAT S PSNVRCN=0,PSNVRSL1=56
  1. F PSNVRSL2=0:0 S PSNVRSL2=$O(^DD(PSNVRSL1,"AUDIT",PSNVRSL2)) Q:'PSNVRSL2 D
  1. .S PSNVRCN=PSNVRCN+1,PSNVRDAT(PSNVRCN)=PSNVRSL1_"^"_PSNVRSL2
  1. .S PSNVRSUB=PSNVRDAT(PSNVRCN),$P(PSNVRDAT(PSNVRCN),"^",3)=$$GET1^DID($P(PSNVRSUB,"^"),$P(PSNVRSUB,"^",2),,"LABEL")
  1. .S $P(PSNVRDAT(PSNVRCN),"^",4)=56_";;"_PSNVRSL2
  1. DRIN ;Redisplay for selection
  1. W @IOF
  1. W !?5,"Audited fields from the Drug Interaction (#56) File:",! S PSNVRFL=0
  1. D AUDF
  1. Q:PSNVROUT
  1. I 'PSNVRFL D MESS,YN Q
  1. D SELECT(PSNVRCN) I PSNVRAGN G DRIN
  1. Q
  1. ;
  1. ;
  1. AUDF ;Show audited fields
  1. F PSNVRSL1=1:1 Q:'$D(PSNVRDAT(PSNVRSL1))!(PSNVROUT) D
  1. .I ($Y+5)>IOSL D YN Q:PSNVROUT W @IOF
  1. .S PSNVRSUB=PSNVRDAT(PSNVRSL1)
  1. .W !?2,PSNVRSL1_") "_$P(PSNVRDAT(PSNVRSL1),"^",3) S PSNVRFL=1
  1. Q
  1. ;
  1. ;
  1. MESS ;Write Message
  1. W !,"***No Audited fields for this file.***"
  1. Q
  1. ;
  1. ;
  1. YN ;yes or no prompt if no audited fields found for a file
  1. W ! K DIR,Y S DIR(0)="E",DIR("A")="Press Return to continue" D ^DIR
  1. I $D(DTOUT)!($D(DUOUT))!('Y) S PSNVROUT=1
  1. Q
  1. ;
  1. ;
  1. DL ;Delimited File message
  1. ;
  1. W !!,"You have selected the delimited file output." D YN Q:PSNVROUT
  1. W @IOF
  1. W !,"The report output will be displayed on the screen in a delimited format, so"
  1. W !,"it can be captured and exported. If you are using Reflections, you can turn"
  1. W !,"logging on by selecting 'File' on the top left corner of the screen, then"
  1. W !,"select 'Logging' and capture to your desired location."
  1. W !!,"The format of the output is as follows, using '^' as the delimiter:"
  1. I PSNVRSUM="S" D D YN Q
  1. .W !!,"File Name^Number of Records^Records Changed^Fields/Sub-fields Changed" Q:'PSNVRPMI
  1. .W !!,"**note** - the output for the PMI and Warning label Files"
  1. .W !," will only contain File Name and Number of Records.",!
  1. W !!,"File Name^Records - #####"
  1. W !,"File Name^Entry Name^Field Name^Field Number^Old Value^New Value"
  1. W !!,"**notes** - the Old Value and New Value will repeat as often as necessary."
  1. W !," duplicate Entry Names will have (duplicate #) appended."
  1. W !," duplicate Field Names will have the subfile number appended."
  1. W !," File Name^***No Changes** will print if there were no changes."
  1. D YN
  1. Q
  1. ;
  1. ;
  1. PMIP ;Print PMI and Warning label totals
  1. ;
  1. I PSNFON,($Y+5)>IOSL D HD^PSNVCR2 Q:PSNCROUT
  1. I PSNFON W !
  1. I PSNFON,($Y+5)>IOSL D HD^PSNVCR2 Q:PSNCROUT
  1. I PSNFON W !,"PMI and Warning Label counts",!
  1. I PSNFON,($Y+5)>IOSL D HD^PSNVCR2 Q:PSNCROUT
  1. S PSNCRAT=0 F PSNCRA2=0:0 S PSNCRA2=$O(^PS(50.621,PSNCRA2)) Q:'PSNCRA2 I $G(^PS(50.621,PSNCRA2,0))'="" S PSNCRAT=PSNCRAT+1 I PSNCRDEV="C",PSNFON,PSNCRAT#500=0 W "."
  1. I PSNFON W !?5,"PMI-ENGLISH FILE (#50.621) - "_PSNCRAT_" records"
  1. I 'PSNFON W !,"PMI-ENGLISH FILE^"_PSNCRAT_"^0^0"
  1. ;
  1. I PSNFON,($Y+5)>IOSL D HD^PSNVCR2 Q:PSNCROUT
  1. S PSNCRAT=0 F PSNCRA2=0:0 S PSNCRA2=$O(^PS(50.622,PSNCRA2)) Q:'PSNCRA2 I $G(^PS(50.622,PSNCRA2,0))'="" S PSNCRAT=PSNCRAT+1 I PSNCRDEV="C",PSNFON,PSNCRAT#500=0 W "."
  1. I PSNFON W !!?5,"PMI-SPANISH FILE (#50.622) - "_PSNCRAT_" records"
  1. I 'PSNFON W !,"PMI-SPANISH FILE^"_PSNCRAT_"^0^0"
  1. ;
  1. I PSNFON,($Y+5)>IOSL D HD^PSNVCR2 Q:PSNCROUT
  1. S PSNCRAT=0 F PSNCRA2=0:0 S PSNCRA2=$O(^PS(50.623,PSNCRA2)) Q:'PSNCRA2 I $G(^PS(50.623,PSNCRA2,0))'="" S PSNCRAT=PSNCRAT+1 I PSNCRDEV="C",PSNFON,PSNCRAT#500=0 W "."
  1. I PSNFON W !!?5,"PMI MAP-ENGLISH FILE (#50.623) - "_PSNCRAT_" records"
  1. I 'PSNFON W !,"PMI MAP-ENGLISH FILE^"_PSNCRAT_"^0^0"
  1. ;
  1. I PSNFON,($Y+5)>IOSL D HD^PSNVCR2 Q:PSNCROUT
  1. S PSNCRAT=0 F PSNCRA2=0:0 S PSNCRA2=$O(^PS(50.624,PSNCRA2)) Q:'PSNCRA2 I $G(^PS(50.624,PSNCRA2,0))'="" S PSNCRAT=PSNCRAT+1 I PSNCRDEV="C",PSNFON,PSNCRAT#500=0 W "."
  1. I PSNFON W !!?5,"PMI MAP-SPANISH FILE (#50.624) - "_PSNCRAT_" records"
  1. I 'PSNFON W !,"PMI MAP-SPANISH FILE^"_PSNCRAT_"^0^0"
  1. I PSNFON,($Y+5)>IOSL D HD^PSNVCR2
  1. ;
  1. Q