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

PSNPPSMG.m

Go to the documentation of this file.
  1. PSNPPSMG ;HP/MJE-PPSN update NDF data ; 05 Mar 2014 1:20 PM
  1. ;;4.0;NATIONAL DRUG FILE;**513,565**; 30 Oct 98;Build 16
  1. ;Reference to ^PSDRUG supported by DBIA #2352,#221
  1. ;
  1. MESSAGE ;
  1. D CTRKDL^PSNPPSMS("Sending DATA UPDATE FOR NDF email")
  1. W:'$G(PSNSCJOB) !,"Sending mail messages...",!
  1. K FDA
  1. S FDA(57.231,CTRLXIEN_","_CTRLIEN_",",6)="MESSAGE"
  1. D UPDATE^DIE("","FDA","CTRLIEN")
  1. K FDA
  1. S FILE=0,GROOT=$NA(^TMP("PSN PPSN PARSED",$J,"DATAO"))
  1. ;
  1. S PSNPS=$P($G(^PS(59.7,1,10)),"^",12) I PSNPS'="N" G G1
  1. N MESSC S MESSC=""
  1. F S MESSC=$O(^TMP("PSN PPSN PARSED",$J,"MESSAGE",MESSC)) Q:MESSC="" D
  1. .I MESSC=0 S ^NDFK(5000,1,2,0)=^TMP("PSN PPSN PARSED",$J,"MESSAGE",MESSC) Q
  1. .S ^NDFK(5000,1,2,MESSC,0)=^TMP("PSN PPSN PARSED",$J,"MESSAGE",MESSC)
  1. S MESSC=""
  1. F S MESSC=$O(^TMP("PSN PPSN PARSED",$J,"MESSAGE2",MESSC)) Q:MESSC="" D
  1. .I MESSC=0 S ^NDFK(5000,1,3,0)=^TMP("PSN PPSN PARSED",$J,"MESSAGE2",MESSC) Q
  1. .S ^NDFK(5000,1,3,MESSC,0)=^TMP("PSN PPSN PARSED",$J,"MESSAGE2",MESSC)
  1. ;
  1. G1 K ^TMP($J) M ^TMP($J)=^TMP("PSN PPSN PARSED",$J,"MESSAGE") K ^TMP($J,0)
  1. ;
  1. GROUP K XMY S X=$G(^TMP("PSN PPSN PARSED",$J,"GROUP")) I X]"" S XMY("G."_X_"@"_^XMB("NETNAME"))=""
  1. S PSNPS=$P($G(^PS(59.7,1,10)),"^",12)
  1. D XMY
  1. S XMSUB="DATA UPDATE FOR NDF"
  1. S XMDUZ="noreply@domain.ext"
  1. S XMTEXT="^TMP($J," N DIFROM D ^XMD
  1. D CTRKDL^PSNPPSMS("Sent email for DATA UPDATE FOR NDF.")
  1. K FDA
  1. S FDA(57.231,CTRLXIEN_","_CTRLIEN_",",6)="MESSAGE2"
  1. D UPDATE^DIE("","FDA","CTRLIEN")
  1. K FDA
  1. K ^TMP($J) M ^TMP($J)=^TMP("PSN PPSN PARSED",$J,"MESSAGE2") K ^TMP($J,0)
  1. K XMY S X=$G(^TMP("PSN PPSN PARSED",$J,"GROUP")) I X]"" S XMY("G."_X_"@"_^XMB("NETNAME"))=""
  1. ;
  1. D XMY
  1. D CTRKDL^PSNPPSMS("Sending UPDATED INTERACTIONS and FDA MED GUIDE message")
  1. S XMSUB="UPDATED INTERACTIONS AND FDA MED GUIDE"
  1. S XMDUZ="noreply@domain.ext"
  1. S XMTEXT="^TMP($J," N DIFROM D ^XMD
  1. D CTRKDL^PSNPPSMS("Sent email for UPDATED INTERACTIONS and FDA MED GUIDE.")
  1. K DA
  1. Q
  1. ;
  1. COMMSG ;Send error message that comm link with PPSN is not available
  1. K ^TMP("PSN PPSN PARSED",$J,"COMMSG")
  1. N PSNPS,PSMSGTXT,XMY,X,XMSUB,XMTEXT,PSGRP,LNCNT,FIRST,I3,I4,I5,I6,I7,III
  1. S LNCNT=1,FIRST=0,(I3,I4,I5,I6,I7)="",PSNPS=$P($G(^PS(59.7,1,10)),"^",12)
  1. S ^TMP("PSN PPSN PARSED",$J,"COMMSG",1)="*************************************************************************"
  1. S ^TMP("PSN PPSN PARSED",$J,"COMMSG",3)="*************************************************************************"
  1. S ^TMP("PSN PPSN PARSED",$J,"COMMSG",4)="The following file completed installation with error(s)"_$S(PSNPS="Q":" for QA",1:"")_":"
  1. S ^TMP("PSN PPSN PARSED",$J,"COMMSG",5)=""
  1. S ^TMP("PSN PPSN PARSED",$J,"COMMSG",6)=" Update file Name"
  1. S ^TMP("PSN PPSN PARSED",$J,"COMMSG",7)=" -------------------"
  1. S ^TMP("PSN PPSN PARSED",$J,"COMMSG",8)=" "_$P(PSNHLD,";")
  1. S ^TMP("PSN PPSN PARSED",$J,"COMMSG",9)=""
  1. S ^TMP("PSN PPSN PARSED",$J,"COMMSG",10)=""
  1. S LNCNT=10
  1. G:'$D(^TMP("PSN PPSN ERR",$J)) LZ S LNCNT=11 F S I3=$O(^TMP("PSN PPSN ERR",$J,I3)) Q:I3="" D
  1. .F S I4=$O(^TMP("PSN PPSN ERR",$J,I3,I4)) Q:'I4 D
  1. ..F S I5=$O(^TMP("PSN PPSN ERR",$J,I3,I4,I5)) Q:I5="" D
  1. ...F S I6=$O(^TMP("PSN PPSN ERR",$J,I3,I4,I5,I6)) Q:I6="" D
  1. ....F S I7=$O(^TMP("PSN PPSN ERR",$J,I3,I4,I5,I6,I7)) Q:'I7 D
  1. .....S III=$G(^TMP("PSN PPSN ERR",$J,I3,I4,I5,I6,I7)) D
  1. ......I FIRST=0 S ^TMP("PSN PPSN PARSED",$J,"COMMSG",LNCNT)="Error Message: " S LNCNT=LNCNT+1,FIRST=1
  1. ......S ^TMP("PSN PPSN PARSED",$J,"COMMSG",LNCNT)=$$TRNS(I4,I5,I6) S LNCNT=LNCNT+1
  1. ......S ^TMP("PSN PPSN PARSED",$J,"COMMSG",LNCNT)=" "_$P(III,"^")
  1. ......S LNCNT=LNCNT+1
  1. LZ I '$D(^TMP("PSN PPSN ERR",$J)) S ^TMP("PSN PPSN PARSED",$J,"COMMSG",LNCNT+1)="Error Message: "_$P(COMM,"^",2)
  1. S ^TMP("PSN PPSN PARSED",$J,"COMMSG",LNCNT+2)=" The update file completed installation but the completion"
  1. S ^TMP("PSN PPSN PARSED",$J,"COMMSG",LNCNT+3)=" message was not accepted by PPS-N."
  1. S ^TMP("PSN PPSN PARSED",$J,"COMMSG",LNCNT+4)=""
  1. S ^TMP("PSN PPSN PARSED",$J,"COMMSG",LNCNT+5)="Contact the National Help Desk or enter a ticket."
  1. S ^TMP("PSN PPSN PARSED",$J,"COMMSG",LNCNT+6)=""
  1. S X=$G(^TMP("PSN PPSN PARSED",$J,"GROUP")) I X]"" S XMY("G."_X_"@"_^XMB("NETNAME"))=""
  1. D XMY
  1. S XMDUZ="noreply@domain.ext"
  1. S XMSUB="ERROR: PPS-N/NDF File "_$P(PSNHLD,";",1)_" INSTALL"
  1. I PSNPS'="" I PSNPS="Q" S XMSUB="ERROR: PPS-N/NDF File "_$P(PSNHLD,";",1)_" INSTALL FOR QA"
  1. S XMTEXT="^TMP(""PSN PPSN PARSED"",$J,""COMMSG"","
  1. N DIFROM D ^XMD
  1. D CTRKDL^PSNPPSMS("Error email sent (COMMSG).")
  1. Q
  1. ;
  1. IERRMSG ;Send error message that comm link with PPSN is not available
  1. K ^TMP("PSN PPSN PARSED",$J,"IERRMSG")
  1. Q:INSTIEN=""
  1. Q:'$D(^PS(57.23,1,5,INSTIEN,2,1))
  1. N PSNEDATA,PSNPS,PSMSGTXT,XMY,X,XMSUB,XMTEXT,PSGRP,LNCNT,FIRST,I3,I4,I5,I6,I7,III
  1. S LNCNT=1,FIRST=0,I3="",PSNPS=$P($G(^PS(59.7,1,10)),"^",12)
  1. S ^TMP("PSN PPSN PARSED",$J,"IERRMSG",1)="*************************************************************************"
  1. S ^TMP("PSN PPSN PARSED",$J,"IERRMSG",2)=" Error(s) occurred during the install of "_$P(PSNHLD,";")_$S(PSNPS="Q":" for QA",1:"")_":"
  1. S ^TMP("PSN PPSN PARSED",$J,"IERRMSG",3)="*************************************************************************"
  1. S ^TMP("PSN PPSN PARSED",$J,"IERRMSG",4)=""
  1. S ^TMP("PSN PPSN PARSED",$J,"IERRMSG",5)="The "_$P(PSNHLD,";")_"NDF Update file completed installation with error(s)."
  1. S ^TMP("PSN PPSN PARSED",$J,"IERRMSG",6)="Contact the National Help Desk or enter a ticket."
  1. S ^TMP("PSN PPSN PARSED",$J,"IERRMSG",7)=""
  1. S LNCNT=7
  1. G:'$D(^PS(57.23,1,5,INSTIEN,2)) LZ2
  1. S LNCNT=11,I3=0 F S I3=$O(^PS(57.23,1,5,INSTIEN,2,I3)) Q:I3="" I $D(^PS(57.23,1,5,INSTIEN,2,I3,0)) D
  1. .I FIRST=0 S ^TMP("PSN PPSN PARSED",$J,"IERRMSG",LNCNT)="Error Message(s): " S LNCNT=LNCNT+1,FIRST=1
  1. .S PSNEDATA="",PSNEDATA=^PS(57.23,1,5,INSTIEN,2,I3,0)
  1. .S ^TMP("PSN PPSN PARSED",$J,"IERRMSG",LNCNT)=" File: "_$$LJ^XLFSTR($P(PSNEDATA,"^",2),13," ")_" IEN: "_$$LJ^XLFSTR($P(PSNEDATA,"^",3),13," ")_" Record Type: "_$$LJ^XLFSTR($P(PSNEDATA,"^",4),13," ") S LNCNT=LNCNT+1
  1. .S ^TMP("PSN PPSN PARSED",$J,"IERRMSG",LNCNT)=" Last Record: "_$P(PSNEDATA,"|",2,3) S LNCNT=LNCNT+1
  1. .S ^TMP("PSN PPSN PARSED",$J,"IERRMSG",LNCNT)=" Message: "_$P(PSNEDATA,"^",5) S LNCNT=LNCNT+1
  1. .S ^TMP("PSN PPSN PARSED",$J,"IERRMSG",LNCNT)=" " S LNCNT=LNCNT+1
  1. ;
  1. LZ2 ;
  1. S ^TMP("PSN PPSN PARSED",$J,"IERRMSG",LNCNT)="",XMSUB="ERROR: PPS-N/NDF File "_$P(PSNHLD,";",1)_" INSTALL"
  1. S X=$G(^TMP("PSN PPSN PARSED",$J,"GROUP")) I X]"" S XMY("G."_X_"@"_^XMB("NETNAME"))=""
  1. I PSNPS'="",PSNPS="Q" S XMSUB="ERROR: PPS-N/NDF File "_$P(PSNHLD,";",1)_" INSTALL FOR QA"
  1. K XMY S X=$G(^TMP("PSN PPSN PARSED",$J,"GROUP")) I X]"" S XMY("G."_X_"@"_^XMB("NETNAME"))=""
  1. D XMY
  1. S XMDUZ="noreply@domain.ext"
  1. S XMTEXT="^TMP(""PSN PPSN PARSED"",$J,""IERRMSG"","
  1. N DIFROM D ^XMD
  1. D CTRKDL^PSNPPSMS("Install completed with errors and email with errors was sent (IERRMSG).")
  1. Q
  1. ;
  1. SMSG ;Send install successful message
  1. K XMY
  1. N PSNPS
  1. ;SETUP PRODUCTION OR SQA
  1. K ^TMP("PSN PPSN PARSED",$J,"MSG2")
  1. N PSGRP,PSNFSIZE,PSSIZE,PSFILE,PSWRKDIR,PSOS
  1. S PSWRKDIR=$$GETD^PSNFTP()
  1. S PSNFSIZE=1,PSSIZE=""
  1. S PSOS=$$GETOS^PSNFTP
  1. I +PSOS=3 D UXFSIZE(PSWRKDIR,PSNHLD,.PSSIZE)
  1. I +PSOS'=3 D FILSIZE^PSNFTP2(PSWRKDIR,PSNHLD,.PSSIZE,1)
  1. ;
  1. S PSNPS=$P($G(^PS(59.7,1,10)),"^",12)
  1. ;
  1. S XMSUB="PPS-N/NDF File "_$P(PSNHLD,";",1)_" INSTALLED"
  1. I PSNPS'="" I PSNPS="Q" S XMSUB=XMSUB_" FOR QA"
  1. S ^TMP("PSN PPSN PARSED",$J,"MSG2",1)="PPS-N/NDF File "_$P(PSNHLD,";",1)_" (Size "_PSSIZE_$S(+PSOS=1:"",+PSOS=3:" bytes",1:"")_")"
  1. S ^TMP("PSN PPSN PARSED",$J,"MSG2",2)="INSTALLED successfully."
  1. D XMY
  1. S XMTEXT="^TMP(""PSN PPSN PARSED"",$J,""MSG2""," N DIFROM D ^XMD
  1. K ^TMP("PSN PPSN PARSED",$J,"MSG2")
  1. K ^TMP($J)
  1. K XMSUB,XMDUZ,XMTEXT
  1. Q
  1. ;
  1. DRGMSG ;
  1. W:'$G(PSNSCJOB) !,"Generating mail messages for unmatched/re-matched drugs...",!
  1. D REPORT^PSNPPSNW ; ********************
  1. ;
  1. N INDX,LINE,XMZ,PSNPS K ^TMP("PSN",$J) S LINE=1
  1. S ^TMP("PSN",$J,LINE,0)="PPS-N Update File: "_$P(PSNHLD,";",1),LINE=LINE+1,^TMP("PSN",$J,LINE,0)="",LINE=LINE+1
  1. F INDX="A","X","I" D LOAD1^PSNPPSMS
  1. ;S XMDUZ="NDF_MANAGER"
  1. S XMDUZ="noreply@domain.ext"
  1. ;
  1. S XMSUB="DRUGS UNMATCHED FROM NATIONAL DRUG FILE"
  1. ;
  1. S XMTEXT="^TMP(""PSN"",$J,"
  1. K XMY S X=$G(^TMP("PSN PPSN PARSED",$J,"GROUP")) I X]"" S XMY("G."_X_"@"_^XMB("NETNAME"))=""
  1. S PSGRP="",PSGRP=$$GET1^DIQ(57.23,1,5) ;get PPS-N UPDATE CONTROL:LOCAL EMAIL GROUP NAME (57.23:5)
  1. S:PSGRP'="" XMY(PSGRP)=""
  1. ;
  1. S PSNPS=$P($G(^PS(59.7,1,10)),"^",12)
  1. D XMY
  1. N DIFROM D ^XMD I $D(XMZ) S DA=XMZ,DIE=3.9,DR="1.7///P;" D ^DIE
  1. ;
  1. S FDA(57.231,CTRLXIEN_","_CTRLIEN_",",10)="MESSAGE3"
  1. D UPDATE^DIE("","FDA","CTRLIEN")
  1. K FDA
  1. K ^TMP($J) M ^TMP($J)=^TMP("PSN PPSN PARSED",$J,"MESSAGE3") K ^TMP($J,0)
  1. K XMY S X=$G(^TMP("PSN PPSN PARSED",$J,"GROUP")) I X]"" S XMY("G."_X_"@"_^XMB("NETNAME"))=""
  1. S PSNPS=$P($G(^PS(59.7,1,10)),"^",12)
  1. D XMY
  1. S XMSUB="LOCAL DRUGS REMATCHED TO NDF"
  1. S XMDUZ="noreply@domain.ext"
  1. S XMTEXT="^TMP($J," N DIFROM
  1. D ^XMD
  1. K DIE,DR
  1. Q
  1. UXFSIZE(PSWRKDIR,PSNHLD,PSSIZE) ; get linux file size
  1. N XPV,PSXLOG,PV S PSSIZE=""
  1. S:'$D(PSWRKDIR) PSWRKDIR=$$GETD^PSNFTP()
  1. S XPV="S PV=$ZF(-1,""stat -c%s "_PSWRKDIR_PSNHLD_">"_PSWRKDIR_"PSNSIZE.DAT"")"
  1. X XPV
  1. S PSXLOG="",PSXLOG=$$FTG^%ZISH(PSWRKDIR,"PSNSIZE.DAT",$NA(^TMP("PSNFSIZELOG",$J,1)),3)
  1. I $D(^TMP("PSNFSIZELOG",$J,1)) S PSSIZE=$G(^TMP("PSNFSIZELOG",$J,1)) K ^TMP("PSNFSIZELOG",$J)
  1. D LINUXDEL^PSNFTP(1,PSWRKDIR,"PSNSIZE.DAT")
  1. Q
  1. TRNS(PSNFILE,IEN,PSNFIELD) ; get the label of file/field
  1. N PSNF,FILE,FILENM,FIELD,PSNARR,FLD,FIELDX
  1. S (FIELD,FILE,FILENM,PSNARR,FLD,PSNF)=""
  1. S FILE=PSNFILE,(FIELD,FIELDX)=PSNFIELD
  1. S PSNF=$S($D(^DIC(FILE,0)):$P($G(^DIC(FILE,0)),U),1:"**Wrong file number**")
  1. I FIELD["," S FILENM=$P($G(^DD(FILE,+FIELD,0)),"^"),FILE=+$P($G(^DD(FILE,$P(FIELD,","),0)),"^",2) S:FILE FIELD=$P(FIELD,",",2)
  1. K PSNARR D FIELD^DID(FILE,FIELD,"","LABEL","PSNARR") S FLD=$S(FIELDX[",":FILENM_" >>> ",1:"")_$G(PSNARR("LABEL"))
  1. Q " File: "_$$LJ^XLFSTR(PSNF,13," ")_" IEN#: "_$$LJ^XLFSTR(IEN,13," ")_" Field: "_$$LJ^XLFSTR(FLD,13," ")
  1. ;
  1. XMY ;set XMY for mail message
  1. S XMDUZ="noreply@domain.ext"
  1. S DA=0 F S DA=$O(^XUSEC("PSNMGR",DA)) Q:'DA S XMY(DA)=""
  1. I $D(DUZ) S XMY(DUZ)=""
  1. S PSGRP="",PSGRP=$$GET1^DIQ(57.23,1,5) S:PSGRP'="" XMY($$MG(PSGRP))="" ;PRIMARY PPS-N MAIL GROUP
  1. S PSGRP="",PSGRP=$$GET1^DIQ(57.23,1,6) S:PSGRP'="" XMY($$MG(PSGRP))="" ;SECONDARY MAIL GROUP
  1. Q
  1. ;
  1. MG(PSNGG) ; look for Mail Group
  1. I $E(PSNGG,1,2)="G." Q:$O(^XMB(3.8,"B",$E(PSNGG,3,99),0)) PSNGG
  1. Q:$O(^XMB(3.8,"B",PSNGG,0)) "G."_PSNGG
  1. Q PSNGG