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

PSBIHS2.m

Go to the documentation of this file.
  1. PSBIHS2 ;KF/VAOIT PSB DRUG REPORT
  1. ;;1.0;PSB BCMA CPS FOXK;**1018**;;Build 27
  1. EN ;
  1. W @IOF
  1. W !,"Hello ",$P($$GET1^DIQ(200,DUZ,.01,"E"),",",2)
  1. W !,"Let's Look at those 'Synonyms' in 'The Drug File' File: 50"
  1. W !,"Searching....." D WAIT^DICD W !
  1. S UIO1=IO ;SAVE IO
  1. ;MAKE SURE TO OPEN NULL DEVICE.
  1. S DIC=3.5,DIC(0)="M" S X="NULL" D ^DIC
  1. S IOP="`"_+Y D ^%ZIS
  1. S UIO=$P($G(^%ZIS(1,+Y,0)),U,2)
  1. Q:POP
  1. D NEW,BAD
  1. TAS ;TASK IT OR NOT
  1. S %ZIS="Q"
  1. W ! D ^%ZIS K %ZIS
  1. I POP D Q
  1. .W $C(7)
  1. .K VISN,PSBEDATE,PSBBDATE,PSBDV
  1. ; output not queued...
  1. N PSBTK
  1. I '$D(IO("Q")) D
  1. .D WAIT^DICD U IO D PRNT
  1. .I IO'=IO(0) D ^%ZISC
  1. ; set up the Task...
  1. I $D(IO("Q")) D
  1. .N ZTDESC,ZTSAVE,ZTIO,ZTRTN
  1. .S ZTRTN="TSK1^PSBIHS2"
  1. .S ZTDESC="PSB Drug File Synonym Report"
  1. .S ZTIO=ION
  1. .D ^%ZTLOAD
  1. .D HOME^%ZIS
  1. .W !,$S($G(ZTSK):"Task number "_ZTSK_" queued.",1:"ERROR -- NOT QUEUED!")
  1. .K IO("Q"),ZTSK
  1. Q
  1. NEW ;
  1. K ^TMP($J) S (PSBCNT,PSBCNT1,PSBC)=0
  1. ;COLLECT ALL DRUG SYNONYM IN TMP IF IT FAILS SMED^PSBMLTS
  1. N PSBIEN,PSBJ
  1. S PSBIEN=0 F S PSBIEN=$O(^PSDRUG(PSBIEN)) Q:'+PSBIEN D
  1. .K PSBSCAN D SMED^PSBMLTS(.PSBSCAN,PSBIEN)
  1. .;Q:+PSBSCAN(0)>0 ;IEN PASSED ITS OKAY
  1. .;IF DRUG IEN FAILS SMED&PSBMLTS ADD IEN TO LIST OF SYNS/IENS
  1. .I '$D(^TMP($J,"SYN",PSBIEN))&(+PSBSCAN(0)'>0) S ^TMP($J,"SYN",PSBIEN)=""
  1. .S PSBJ=0 F S PSBJ=$O(^PSDRUG(PSBIEN,1,PSBJ)) Q:'+PSBJ D
  1. ..;get ALL synm for ALL Drugs.
  1. ..S PSBTEXT=$P($G(^PSDRUG(PSBIEN,1,PSBJ,0)),"^",1)
  1. ..N J F J=1:1:$L(PSBTEXT) I $E(PSBTEXT,J,J)?.1A S PSBTEXT="NO" Q ;;no alpha only syns allowed in list.
  1. ..K PSBSCAN D SMED^PSBMLTS(.PSBSCAN,PSBTEXT)
  1. ..Q:+PSBSCAN(0)>0 ;IEN PASSED ITS OKAY
  1. ..S:+PSBTEXT ^TMP($J,"SYN",PSBTEXT)=""
  1. ;
  1. Q
  1. TSK1 ;
  1. D NEW,PRNT,KILL
  1. Q
  1. BAD ;INACTIVE DRUGS WITH DUP SYNS
  1. S PSBSYN="" F S PSBSYN=$O(^TMP($J,"SYN",PSBSYN)) Q:PSBSYN'>0 D SMED(PSBSYN,2,1)
  1. I $D(^TMP($J,"BADSYN")) D
  1. .S PSBSYN="" F S PSBSYN=$O(^TMP($J,"BADSYN",PSBSYN)) Q:PSBSYN="" D SMED(PSBSYN,2,0)
  1. .D AUTO
  1. Q
  1. PRNT ;REPORT LOOP
  1. S PSBSYN="" F S PSBSYN=$O(^TMP($J,"SYN",PSBSYN)) Q:PSBSYN'>0 D SMED(PSBSYN,2,0)
  1. W !,"Found "_PSBC_" Synonym Issues."
  1. Q
  1. SMED(PSBVAL,PSBL,PSBCH) ; SAME LOGIC in Scanner^PSBMLTS
  1. ;PSBVAL DRUG OR SYN
  1. ;PSBL FOUND CNT
  1. ;PSBCH O WRITE DETAIL, 1 HIDE DETAILS INACTIVE SEARCH FIRST.
  1. K ^TMP("DILIST",$J)
  1. ;U "//./nul" HIDE ECHO BACK DISPLAY
  1. U UIO D FIND^DIC(50,"","","AX",PSBVAL,"*","B^C")
  1. U UIO1 ;BACK TO REG DEVICE.
  1. Q:+$G(^TMP("DILIST",$J,0))<PSBL ;ITS OKAY BAIL OUT
  1. S PSBC=PSBC+1
  1. W:PSBCH=0 !!,"There are ",+^TMP("DILIST",$J,0)," matches to '",PSBVAL,"'."
  1. F PSBX=0:0 S PSBX=$O(^TMP("DILIST",$J,2,PSBX)) Q:'PSBX D
  1. .W:PSBCH=0 !!,"MATCH #:..................",PSBX
  1. .W:PSBCH=0 !,"IEN:......................",^TMP("DILIST",$J,2,PSBX)
  1. .W:PSBCH=0 !,"NAME:.....................",^TMP("DILIST",$J,1,PSBX)
  1. .S PSBFLD=0
  1. .F S PSBFLD=$O(^TMP("DILIST",$J,"ID",PSBX,PSBFLD)) Q:'PSBFLD D
  1. ..D FIELD^DID(50,PSBFLD,"","LABEL","PSBFLD")
  1. ..; IF PREVIEW ONLY LABEL IS INATACTVIE DRUG AND HAS A DATE, AND PASSED VAL IS NOT SAME DRUG IEN.
  1. ..I PSBCH=1&(PSBFLD("LABEL")="INACTIVE DATE")&($G(^TMP("DILIST",$J,"ID",PSBX,PSBFLD))'="")&(PSBVAL'=^TMP("DILIST",$J,2,PSBX)) D
  1. ...S ^TMP($J,"BAD2",^TMP("DILIST",$J,2,PSBX))="",^TMP($J,"BADSYN",PSBVAL)="",PSBCNT=PSBCNT+1
  1. ...W !,"IEN:......................",^TMP("DILIST",$J,2,PSBX)
  1. ...W !,"NAME:.....................",^TMP("DILIST",$J,1,PSBX)
  1. ..I PSBCH=0 W !,PSBFLD("LABEL"),":" F Q:$X>25 W "."
  1. ..W:PSBCH=0 ^TMP("DILIST",$J,"ID",PSBX,PSBFLD)
  1. I PSBCH=0 W ! F J=1:1:IOM W "-"
  1. K ^TMP("DILIST",$J)
  1. Q
  1. AUTO; REMOVE SYNONYMS FROM INACTIVE DRUGS.
  1. Q:'$D(^TMP($J,"BAD2"))
  1. W !,"Hello,"_$P($$GET1^DIQ(200,DUZ,.01,"E"),",",2),!,"I found Dupiclate synonyms on Inactive Drugs, would youlike me clean these up for up?" S %=2 D YN^DICN
  1. I '$D(^XUSEC("PSJ RPHARM",DUZ)) W !,"Sorry ",$P($$GET1^DIQ(200,DUZ,.01,"E"),",",2)," you dO not hold the 'PSJ RHARM' key Bye!!" Q
  1. Q:%'=1
  1. N PSBCNT,PSBC
  1. S (PSBC,PSBCNT)=0
  1. S DIK="^PSDRUG(DA(1),1,"
  1. S PSBCNT=0,PSBIEN=0 F S PSBIEN=$O(^TMP($J,"BAD2",PSBIEN)) Q:PSBIEN'>0 D
  1. .S DA(1)=PSBIEN,PSBC=PSBC+1
  1. .S PSBJ=0 F S PSBJ=$O(^PSDRUG(PSBIEN,1,PSBJ)) Q:'+PSBJ D
  1. ..S DA=PSBJ D ^DIK S PSBCNT=PSBCNT+1
  1. W !,"All Done you just removed "_PSBCNT_" Synonyms from "_PSBC_" Drugs."
  1. K PSBIEN,DA(1),DA,DIK,PSBCNT,PSBC
  1. Q
  1. KILL ;
  1. K PSBIEN,PSBIEN1,PSBH,PSBJ,PSBCNT,PSBCNT1,PSBSYN,^TMP($J),PSBSYNC,PSBCHECK1,PSBTEXT,PSBC,PSBCHECK