GMRAY29 ;SLC/DAN Installation Utilities ;3/1/07 14:34
;;4.0;Adverse Reaction Tracking;**29**;Mar 29, 1996;Build 15
;
;DBIA SECTION
;3744 - $$TESTPAT^VADPT
;10061 - VADPT
;10013 - DIK
;2056 - DIQ
;10018 - DIE
;10070 - XMD
;10103 - XLFDT
;2051 - DIC
;
PRETRAN ;Load conversion table into KIDS build
M @XPDGREF@("GMRAFIX")=^XTMP("GMRAFIX")
Q
;
POST ;Post installation processes
K ^XTMP("GMRAFIX")
M ^XTMP("GMRAFIX")=@XPDGREF@("GMRAFIX")
I '$D(^XTMP("GMRAFIX")) W !,"Conversion table not loaded - INSTALLATION ABORTED" S XPDQUIT=2 Q
D Q Q ;Queue clean up to background
;
Q ;
N ZTRTN,ZTDESC,ZTIO,ZTDTH,ZTSK
S ZTRTN="DQ^GMRAY29",ZTDESC="GMRA*4*29 POST INSTALL ROUTINE",ZTIO="",ZTDTH=$H
D ^%ZTLOAD I '$G(ZTSK) D BMES^XPDUTL("POST INSTALL NOT QUEUED - RUN DQ^GMRA29 AFTER INSTALL FINISHES") Q
D BMES^XPDUTL("Post-install queued as task # "_$G(ZTSK))
Q
;
DQ ;Process begins here
N ERR,TU,TE,TF
D FIXALG
D MAIL
S ^XTMP("GMRAFIX",0)=$$FMADD^XLFDT(DT,30)_"^"_DT_"^Patch GMRA*4*29 conversion table"
K ^XTMP("GMRAFX","FREE") ;Kill free text list so it forces rebuild
Q
;
FIXALG ;Loop through 120.8 update existing free text entries
N GMRAI,FREE,REACTANT,ENTRY
S FREE=$O(^GMRD(120.82,"B","OTHER ALLERGY/ADVERSE REACTION",0)) S:'+FREE ERR=1 S:FREE FREE=FREE_";GMRD(120.82," Q:$G(ERR)
S GMRAI=0 F S GMRAI=$O(^GMR(120.8,GMRAI)) Q:'+GMRAI D
.I '$D(^GMR(120.8,GMRAI,0))!($L($G(^GMR(120.8,GMRAI,0)),"^")=1) D DEL Q
.Q:+$G(^GMR(120.8,GMRAI,"ER"))!($$TESTPAT^VADPT($P(^GMR(120.8,GMRAI,0),U)))!($$DECEASED^GMRAFX($P(^GMR(120.8,GMRAI,0),U))) ;stop if entered in error, test patient or deceased patient
.I $P(^GMR(120.8,GMRAI,0),U,3)=FREE D
..S REACTANT=$P(^GMR(120.8,GMRAI,0),U,2) Q:REACTANT[" ( FREE TEXT )" ;Entry has already been updated
..S ENTRY=$G(^XTMP("GMRAFIX",$$UP^XLFSTR($E(REACTANT,1,30)))) ;For matching purposes, only use the 1st 30 characters
..I ENTRY="" D UPDATEF Q ;Entry not found or designated free text
..I $P(ENTRY,U)="Entered In Error" D UPDATEE Q ;Mark as entered in error
..D UPDATE ;Update free text entry from table
Q
;
DEL ;No zero node, remove entry
N DIK,DA,GMRADONT
S GMRADONT=1 ;Stop HDR from receiving update as it's not needed
S DIK="^GMR(120.8,",DA=GMRAI
D ^DIK
Q
;
UPDATEF ;Update reactant to say free text so users know it isn't a standardized entry
N FDA
S REACTANT=REACTANT_" ( FREE TEXT )"
S FDA(120.8,(GMRAI_","),.02)=REACTANT
D FILE^DIE(,"FDA")
S TF=$G(TF)+1 ;Increment total free text updated counter
Q
;
UPDATEE ;Mark as entered in error, check for NKA
N DIE,DA,DR,DFN,USER,TIME
S DFN=$P(^GMR(120.8,GMRAI,0),U) ;Patient's IEN
S USER=$P(^GMR(120.8,GMRAI,0),U,5),TIME=$P(^(0),U,4)
S DIE="^GMR(120.8,",DA=GMRAI,DR="22///1;23///NOW;24////"_$G(DUZ,.5)
D ^DIE ;Entry is now entered in error
D ADCOM^GMRAFX(GMRAI,"E","Marked entered in error by auto-update in patch GMRA*4*29") ;Adds comment to allergy record
I $$NKASCR^GMRANKA(DFN) D
.I $P(ENTRY,U,2)="NKDA" S DA=DFN,DIE="^GMR(120.86,",DR="1////0;2////"_$G(USER,DUZ)_";3////"_$G(TIME,$$NOW^XLFDT) D ^DIE Q ;Set assessment to NKA
.D CLN^GMRANKA ;Delete assessment
S TE=$G(TE)+1 ;Increment total entered in error counter
Q
;
UPDATE ;Update free text entry to data found in table
N DFN,DIE,DA,DR,AIFN,COM,SIEN,FILE,NAME,IEN,GMRAAR,GMRAPA,GMRASCR,ERRCODE
S DFN=$P(^GMR(120.8,GMRAI,0),U)
S GMRAPA=GMRAI
S FILE=$P(ENTRY,U),NAME=$P(ENTRY,U,2)
S IEN=$$FIND1^DIC(FILE,"",$S(FILE=120.82:"X",1:"MX"),NAME,$S(FILE=120.82:"B",1:""),,"ERRCODE")
I '+IEN S IEN=$$FIND1^DIC(FILE,"","MX",NAME_" ","",,"ERRCODE")
I '+IEN,NAME="ANTIMUSCARINICS/ANTISPASMODICS" S IEN=$$FIND1^DIC(FILE,"","MX","GA801","",,"ERRCODE")
I '+IEN,$L($T(SCREEN^XTID)) S GMRASCR="I '$$SCREEN^XTID(FILE,,Y_"","")" S IEN=$$FIND1^DIC(FILE,"","MX",NAME,"",$G(GMRASCR),"ERRCODE")
I '+IEN S ERR(2,DFN,REACTANT)=ENTRY D UPDATEF Q
S GMRAAR=IEN_";"_$S(FILE=50:"PSDRUG(",FILE=50.416:"PS(50.416,",FILE=50.605:"PS(50.605,",FILE=120.82:"GMRD(120.82,",1:"PSNDF(50.6,")
S GMRAAR(0)=NAME
S GMRAAR("O")=$S(FILE=120.82:$P(^GMRD(120.82,IEN,0),U,2),1:"D")
I $$DUP^GMRAFX3 S ERR(3,DFN,REACTANT)=ENTRY D UPDATEF Q ;Would create a duplicate if update occur
;Update reactant, allergy and signed off fields
S DIE="^GMR(120.8,",DA=GMRAPA,DR=".02////"_GMRAAR(0)_";1////^S X=GMRAAR"_";3.1////"_GMRAAR("O")_";15///1" D ^DIE
I $D(^GMR(120.85,"C",GMRAPA)) D ;Observed reaction, need to update data
.S AIFN=0
.F S AIFN=$O(^GMR(120.85,"C",GMRAPA,AIFN)) Q:'+AIFN D
..S SIEN=$O(^GMR(120.85,AIFN,3,"B",REACTANT,0)) Q:'+SIEN ;Was previous reactant stored as "suspected agent"
..S DA(1)=AIFN,DA=SIEN
..S DIE="^GMR(120.85,DA(1),3,",DR=".01////^S X=GMRAAR(0)" D ^DIE ;Update suspected agent to new value
D DELMUL^GMRAFX3(2),DELMUL^GMRAFX3(3) ;Delete drug ingredient/drug classes multiples
I GMRAAR("O")["D" D UPDATE^GMRAPES1 K LIST ;If reactant type is Drug then add appropriate ingredients and classes
S COM="Updated using auto clean up process from GMRA*4*29. Changed reactant from "_REACTANT_" (free text) "_"to "_GMRAAR(0)_"(file - "_$P(GMRAAR,";",2)_")"
D ADCOM^GMRAFX(GMRAPA,"O",COM) ;Add a comment for this update
S TU=$G(TU)+1 ;Increment total updated counter
Q
;
MAIL ;Send message indicating post install is finished
N XMSUB,XMTEXT,XMDUZ,XMY,XMZ,GMRATXT,CNT,VADM,DFN,REACTANT,LOOP,DIFROM,EXTRA
S XMDUZ="PATCH GMRA*4*29 POST-INSTALL"
S XMY("DAVID.NABER@VA.GOV")="",XMY("CATHERINE.HOANG2@VA.GOV")=""
S XMY("HULET.LEE_ANN@FORUM.VA.GOV")=""
S EXTRA=($D(ERR(2))!($D(ERR(3))))
I 'EXTRA S XMY(.5)="" S:$G(DUZ) XMY(DUZ)=""
S CNT=1
S GMRATXT(CNT)="The post-install routine for patch GMRA*4*29",CNT=CNT+1
S GMRATXT(CNT)="finished on "_$$FMTE^XLFDT($$NOW^XLFDT)_".",CNT=CNT+1
S GMRATXT(CNT)="",CNT=CNT+1
I $G(ERR)=1 D
.S GMRATXT(CNT)="**NOTE: There was a problem with the installation!",CNT=CNT+1
.S GMRATXT(CNT)="Required entry missing from file 120.82 - CONVERSION ABORTED.",CNT=CNT+1
.S GMRATXT(CNT)="Contact the National Help Desk for Immediate assistance.",CNT=CNT+1
I $G(TU)!($G(TE))!($G(TF)) D
.S GMRATXT(CNT)="Here are the results of the update:",CNT=CNT+1
.S GMRATXT(CNT)="",CNT=CNT+1
.F LOOP="TU","TF","TE" D
..S GMRATXT(CNT)=$S(+$G(@LOOP)=0:"No entries were",$G(@LOOP)=1:"One entry was",1:$G(@LOOP)_" entries were")_" "
..S GMRATXT(CNT)=GMRATXT(CNT)_$S(LOOP="TU":"updated to new terms",LOOP="TF":"updated to have (FREE TEXT) appended to the term",1:"marked entered in error")_".",CNT=CNT+1
.S GMRATXT(CNT)="",CNT=CNT+1
S XMTEXT="GMRATXT(",XMSUB="PATCH GMRA*4*29 Post Install COMPLETED"
D ^XMD ;Send totals to OI reps, include local if no problems
F LOOP=2,3 D
.I $D(ERR(LOOP)) D
..S GMRATXT(CNT)="The following patients have allergies that couldn't be converted",CNT=CNT+1
..S GMRATXT(CNT)=$S(LOOP=2:"because the term to update them to couldn't be found in the local files.",1:"because it would create a duplicate entry."),CNT=CNT+1
..S GMRATXT(CNT)="",CNT=CNT+1
..S DFN=0 F S DFN=$O(ERR(LOOP,DFN)) Q:'+DFN D
...K VADM D DEM^VADPT
...S GMRATXT(CNT)="PATIENT: "_VADM(1)_" ("_$E(VADM(2),6,9)_")",CNT=CNT+1
...S REACTANT="" F S REACTANT=$O(ERR(LOOP,DFN,REACTANT)) Q:REACTANT="" D
....S GMRATXT(CNT)="Can't convert "_REACTANT_" to "_$P(ERR(LOOP,DFN,REACTANT),U,2)_" (file: "_$P(ERR(LOOP,DFN,REACTANT),U)_")",CNT=CNT+1
...S GMRATXT(CNT)="",CNT=CNT+1
..S $P(GMRATXT(CNT),"*",70)="*",CNT=CNT+1,GMRATXT(CNT)="",CNT=CNT+1
I EXTRA D
.K XMY S XMY(.5)="" S:$G(DUZ) XMY(DUZ)="" ;Send full report to local site only
.S XMTEXT="GMRATXT(",XMSUB="PATCH GMRA*4*29 Post Install COMPLETED"
.D ^XMD
Q
GMRAY29 ;SLC/DAN Installation Utilities ;3/1/07 14:34
+1 ;;4.0;Adverse Reaction Tracking;**29**;Mar 29, 1996;Build 15
+2 ;
+3 ;DBIA SECTION
+4 ;3744 - $$TESTPAT^VADPT
+5 ;10061 - VADPT
+6 ;10013 - DIK
+7 ;2056 - DIQ
+8 ;10018 - DIE
+9 ;10070 - XMD
+10 ;10103 - XLFDT
+11 ;2051 - DIC
+12 ;
PRETRAN ;Load conversion table into KIDS build
+1 MERGE @XPDGREF@("GMRAFIX")=^XTMP("GMRAFIX")
+2 QUIT
+3 ;
POST ;Post installation processes
+1 KILL ^XTMP("GMRAFIX")
+2 MERGE ^XTMP("GMRAFIX")=@XPDGREF@("GMRAFIX")
+3 IF '$DATA(^XTMP("GMRAFIX"))
WRITE !,"Conversion table not loaded - INSTALLATION ABORTED"
SET XPDQUIT=2
QUIT
+4 ;Queue clean up to background
DO Q
QUIT
+5 ;
Q ;
+1 NEW ZTRTN,ZTDESC,ZTIO,ZTDTH,ZTSK
+2 SET ZTRTN="DQ^GMRAY29"
SET ZTDESC="GMRA*4*29 POST INSTALL ROUTINE"
SET ZTIO=""
SET ZTDTH=$HOROLOG
+3 DO ^%ZTLOAD
IF '$GET(ZTSK)
DO BMES^XPDUTL("POST INSTALL NOT QUEUED - RUN DQ^GMRA29 AFTER INSTALL FINISHES")
QUIT
+4 DO BMES^XPDUTL("Post-install queued as task # "_$GET(ZTSK))
+5 QUIT
+6 ;
DQ ;Process begins here
+1 NEW ERR,TU,TE,TF
+2 DO FIXALG
+3 DO MAIL
+4 SET ^XTMP("GMRAFIX",0)=$$FMADD^XLFDT(DT,30)_"^"_DT_"^Patch GMRA*4*29 conversion table"
+5 ;Kill free text list so it forces rebuild
KILL ^XTMP("GMRAFX","FREE")
+6 QUIT
+7 ;
FIXALG ;Loop through 120.8 update existing free text entries
+1 NEW GMRAI,FREE,REACTANT,ENTRY
+2 SET FREE=$ORDER(^GMRD(120.82,"B","OTHER ALLERGY/ADVERSE REACTION",0))
IF '+FREE
SET ERR=1
IF FREE
SET FREE=FREE_";GMRD(120.82,"
IF $GET(ERR)
QUIT
+3 SET GMRAI=0
FOR
SET GMRAI=$ORDER(^GMR(120.8,GMRAI))
IF '+GMRAI
QUIT
Begin DoDot:1
+4 IF '$DATA(^GMR(120.8,GMRAI,0))!($LENGTH($GET(^GMR(120.8,GMRAI,0)),"^")=1)
DO DEL
QUIT
+5 ;stop if entered in error, test patient or deceased patient
IF +$GET(^GMR(120.8,GMRAI,"ER"))!($$TESTPAT^VADPT($PIECE(^GMR(120.8,GMRAI,0),U)))!($$DECEASED^GMRAFX($PIECE(^GMR(120.8,GMRAI,0),U)))
QUIT
+6 IF $PIECE(^GMR(120.8,GMRAI,0),U,3)=FREE
Begin DoDot:2
+7 ;Entry has already been updated
SET REACTANT=$PIECE(^GMR(120.8,GMRAI,0),U,2)
IF REACTANT[" ( FREE TEXT )"
QUIT
+8 ;For matching purposes, only use the 1st 30 characters
SET ENTRY=$GET(^XTMP("GMRAFIX",$$UP^XLFSTR($EXTRACT(REACTANT,1,30))))
+9 ;Entry not found or designated free text
IF ENTRY=""
DO UPDATEF
QUIT
+10 ;Mark as entered in error
IF $PIECE(ENTRY,U)="Entered In Error"
DO UPDATEE
QUIT
+11 ;Update free text entry from table
DO UPDATE
End DoDot:2
End DoDot:1
+12 QUIT
+13 ;
DEL ;No zero node, remove entry
+1 NEW DIK,DA,GMRADONT
+2 ;Stop HDR from receiving update as it's not needed
SET GMRADONT=1
+3 SET DIK="^GMR(120.8,"
SET DA=GMRAI
+4 DO ^DIK
+5 QUIT
+6 ;
UPDATEF ;Update reactant to say free text so users know it isn't a standardized entry
+1 NEW FDA
+2 SET REACTANT=REACTANT_" ( FREE TEXT )"
+3 SET FDA(120.8,(GMRAI_","),.02)=REACTANT
+4 DO FILE^DIE(,"FDA")
+5 ;Increment total free text updated counter
SET TF=$GET(TF)+1
+6 QUIT
+7 ;
UPDATEE ;Mark as entered in error, check for NKA
+1 NEW DIE,DA,DR,DFN,USER,TIME
+2 ;Patient's IEN
SET DFN=$PIECE(^GMR(120.8,GMRAI,0),U)
+3 SET USER=$PIECE(^GMR(120.8,GMRAI,0),U,5)
SET TIME=$PIECE(^(0),U,4)
+4 SET DIE="^GMR(120.8,"
SET DA=GMRAI
SET DR="22///1;23///NOW;24////"_$GET(DUZ,.5)
+5 ;Entry is now entered in error
DO ^DIE
+6 ;Adds comment to allergy record
DO ADCOM^GMRAFX(GMRAI,"E","Marked entered in error by auto-update in patch GMRA*4*29")
+7 IF $$NKASCR^GMRANKA(DFN)
Begin DoDot:1
+8 ;Set assessment to NKA
IF $PIECE(ENTRY,U,2)="NKDA"
SET DA=DFN
SET DIE="^GMR(120.86,"
SET DR="1////0;2////"_$GET(USER,DUZ)_";3////"_$GET(TIME,$$NOW^XLFDT)
DO ^DIE
QUIT
+9 ;Delete assessment
DO CLN^GMRANKA
End DoDot:1
+10 ;Increment total entered in error counter
SET TE=$GET(TE)+1
+11 QUIT
+12 ;
UPDATE ;Update free text entry to data found in table
+1 NEW DFN,DIE,DA,DR,AIFN,COM,SIEN,FILE,NAME,IEN,GMRAAR,GMRAPA,GMRASCR,ERRCODE
+2 SET DFN=$PIECE(^GMR(120.8,GMRAI,0),U)
+3 SET GMRAPA=GMRAI
+4 SET FILE=$PIECE(ENTRY,U)
SET NAME=$PIECE(ENTRY,U,2)
+5 SET IEN=$$FIND1^DIC(FILE,"",$SELECT(FILE=120.82:"X",1:"MX"),NAME,$SELECT(FILE=120.82:"B",1:""),,"ERRCODE")
+6 IF '+IEN
SET IEN=$$FIND1^DIC(FILE,"","MX",NAME_" ","",,"ERRCODE")
+7 IF '+IEN
IF NAME="ANTIMUSCARINICS/ANTISPASMODICS"
SET IEN=$$FIND1^DIC(FILE,"","MX","GA801","",,"ERRCODE")
+8 IF '+IEN
IF $LENGTH($TEXT(SCREEN^XTID))
SET GMRASCR="I '$$SCREEN^XTID(FILE,,Y_"","")"
SET IEN=$$FIND1^DIC(FILE,"","MX",NAME,"",$GET(GMRASCR),"ERRCODE")
+9 IF '+IEN
SET ERR(2,DFN,REACTANT)=ENTRY
DO UPDATEF
QUIT
+10 SET GMRAAR=IEN_";"_$SELECT(FILE=50:"PSDRUG(",FILE=50.416:"PS(50.416,",FILE=50.605:"PS(50.605,",FILE=120.82:"GMRD(120.82,",1:"PSNDF(50.6,")
+11 SET GMRAAR(0)=NAME
+12 SET GMRAAR("O")=$SELECT(FILE=120.82:$PIECE(^GMRD(120.82,IEN,0),U,2),1:"D")
+13 ;Would create a duplicate if update occur
IF $$DUP^GMRAFX3
SET ERR(3,DFN,REACTANT)=ENTRY
DO UPDATEF
QUIT
+14 ;Update reactant, allergy and signed off fields
+15 SET DIE="^GMR(120.8,"
SET DA=GMRAPA
SET DR=".02////"_GMRAAR(0)_";1////^S X=GMRAAR"_";3.1////"_GMRAAR("O")_";15///1"
DO ^DIE
+16 ;Observed reaction, need to update data
IF $DATA(^GMR(120.85,"C",GMRAPA))
Begin DoDot:1
+17 SET AIFN=0
+18 FOR
SET AIFN=$ORDER(^GMR(120.85,"C",GMRAPA,AIFN))
IF '+AIFN
QUIT
Begin DoDot:2
+19 ;Was previous reactant stored as "suspected agent"
SET SIEN=$ORDER(^GMR(120.85,AIFN,3,"B",REACTANT,0))
IF '+SIEN
QUIT
+20 SET DA(1)=AIFN
SET DA=SIEN
+21 ;Update suspected agent to new value
SET DIE="^GMR(120.85,DA(1),3,"
SET DR=".01////^S X=GMRAAR(0)"
DO ^DIE
End DoDot:2
End DoDot:1
+22 ;Delete drug ingredient/drug classes multiples
DO DELMUL^GMRAFX3(2)
DO DELMUL^GMRAFX3(3)
+23 ;If reactant type is Drug then add appropriate ingredients and classes
IF GMRAAR("O")["D"
DO UPDATE^GMRAPES1
KILL LIST
+24 SET COM="Updated using auto clean up process from GMRA*4*29. Changed reactant from "_REACTANT_" (free text) "_"to "_GMRAAR(0)_"(file - "_$PIECE(GMRAAR,";",2)_")"
+25 ;Add a comment for this update
DO ADCOM^GMRAFX(GMRAPA,"O",COM)
+26 ;Increment total updated counter
SET TU=$GET(TU)+1
+27 QUIT
+28 ;
MAIL ;Send message indicating post install is finished
+1 NEW XMSUB,XMTEXT,XMDUZ,XMY,XMZ,GMRATXT,CNT,VADM,DFN,REACTANT,LOOP,DIFROM,EXTRA
+2 SET XMDUZ="PATCH GMRA*4*29 POST-INSTALL"
+3 SET XMY("DAVID.NABER@VA.GOV")=""
SET XMY("CATHERINE.HOANG2@VA.GOV")=""
+4 SET XMY("HULET.LEE_ANN@FORUM.VA.GOV")=""
+5 SET EXTRA=($DATA(ERR(2))!($DATA(ERR(3))))
+6 IF 'EXTRA
SET XMY(.5)=""
IF $GET(DUZ)
SET XMY(DUZ)=""
+7 SET CNT=1
+8 SET GMRATXT(CNT)="The post-install routine for patch GMRA*4*29"
SET CNT=CNT+1
+9 SET GMRATXT(CNT)="finished on "_$$FMTE^XLFDT($$NOW^XLFDT)_"."
SET CNT=CNT+1
+10 SET GMRATXT(CNT)=""
SET CNT=CNT+1
+11 IF $GET(ERR)=1
Begin DoDot:1
+12 SET GMRATXT(CNT)="**NOTE: There was a problem with the installation!"
SET CNT=CNT+1
+13 SET GMRATXT(CNT)="Required entry missing from file 120.82 - CONVERSION ABORTED."
SET CNT=CNT+1
+14 SET GMRATXT(CNT)="Contact the National Help Desk for Immediate assistance."
SET CNT=CNT+1
End DoDot:1
+15 IF $GET(TU)!($GET(TE))!($GET(TF))
Begin DoDot:1
+16 SET GMRATXT(CNT)="Here are the results of the update:"
SET CNT=CNT+1
+17 SET GMRATXT(CNT)=""
SET CNT=CNT+1
+18 FOR LOOP="TU","TF","TE"
Begin DoDot:2
+19 SET GMRATXT(CNT)=$SELECT(+$GET(@LOOP)=0:"No entries were",$GET(@LOOP)=1:"One entry was",1:$GET(@LOOP)_" entries were")_" "
+20 SET GMRATXT(CNT)=GMRATXT(CNT)_$SELECT(LOOP="TU":"updated to new terms",LOOP="TF":"updated to have (FREE TEXT) appended to the term",1:"marked entered in error")_"."
SET CNT=CNT+1
End DoDot:2
+21 SET GMRATXT(CNT)=""
SET CNT=CNT+1
End DoDot:1
+22 SET XMTEXT="GMRATXT("
SET XMSUB="PATCH GMRA*4*29 Post Install COMPLETED"
+23 ;Send totals to OI reps, include local if no problems
DO ^XMD
+24 FOR LOOP=2,3
Begin DoDot:1
+25 IF $DATA(ERR(LOOP))
Begin DoDot:2
+26 SET GMRATXT(CNT)="The following patients have allergies that couldn't be converted"
SET CNT=CNT+1
+27 SET GMRATXT(CNT)=$SELECT(LOOP=2:"because the term to update them to couldn't be found in the local files.",1:"because it would create a duplicate entry.")
SET CNT=CNT+1
+28 SET GMRATXT(CNT)=""
SET CNT=CNT+1
+29 SET DFN=0
FOR
SET DFN=$ORDER(ERR(LOOP,DFN))
IF '+DFN
QUIT
Begin DoDot:3
+30 KILL VADM
DO DEM^VADPT
+31 SET GMRATXT(CNT)="PATIENT: "_VADM(1)_" ("_$EXTRACT(VADM(2),6,9)_")"
SET CNT=CNT+1
+32 SET REACTANT=""
FOR
SET REACTANT=$ORDER(ERR(LOOP,DFN,REACTANT))
IF REACTANT=""
QUIT
Begin DoDot:4
+33 SET GMRATXT(CNT)="Can't convert "_REACTANT_" to "_$PIECE(ERR(LOOP,DFN,REACTANT),U,2)_" (file: "_$PIECE(ERR(LOOP,DFN,REACTANT),U)_")"
SET CNT=CNT+1
End DoDot:4
+34 SET GMRATXT(CNT)=""
SET CNT=CNT+1
End DoDot:3
+35 SET $PIECE(GMRATXT(CNT),"*",70)="*"
SET CNT=CNT+1
SET GMRATXT(CNT)=""
SET CNT=CNT+1
End DoDot:2
End DoDot:1
+36 IF EXTRA
Begin DoDot:1
+37 ;Send full report to local site only
KILL XMY
SET XMY(.5)=""
IF $GET(DUZ)
SET XMY(DUZ)=""
+38 SET XMTEXT="GMRATXT("
SET XMSUB="PATCH GMRA*4*29 Post Install COMPLETED"
+39 DO ^XMD
End DoDot:1
+40 QUIT