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

GMRA1007.m

Go to the documentation of this file.
  1. GMRA1007 ;IHS/MSC/PLS - Patch support;24-Mar-2014 12:10;DU
  1. ;;4.0;Adverse Reaction Tracking;**1007**;Mar 29, 1996;Build 18
  1. ;
  1. ENV ;EP -
  1. N PATCH
  1. S (XPDDIQ("XPZ1"),XPDDIQ("XPZ2"))=0
  1. ;
  1. ;Check for the installation of other patches
  1. S PATCH="GMRA*4.0*1006"
  1. I '$$PATCH(PATCH) D Q
  1. . W !,"You must first install "_PATCH_"." S XPDQUIT=2
  1. ;Check for the installation of IHS terminology services
  1. S IN="IHS STANDARD TERMINOLOGY 1.0",INSTDA=""
  1. I '$D(^XPD(9.7,"B",IN)) D Q
  1. .W !,"You must first install IHS STANDARD TERMINOLOGY 1.0 before this patch"
  1. S INSTDA=$O(^XPD(9.7,"B",IN,INSTDA),-1)
  1. S STAT=+$P($G(^XPD(9.7,INSTDA,0)),U,9)
  1. I STAT'=3 D Q
  1. .W !,"IHS STANDARD TERMINOLOGY 1.0 must be completely installed before installing this patch"
  1. S (XPDDIQ("XPZ1"),XPDDIQ("XPZ2"))=0
  1. Q
  1. ;
  1. PATCH(X) ;return 1 if patch X was installed, X=aaaa*nn.nn*nnnn
  1. ;copy of code from XPDUTL but modified to handle 4 digit IHS patch numb
  1. Q:X'?1.4UN1"*"1.2N1"."1.2N.1(1"V",1"T").2N1"*"1.4N 0
  1. NEW NUM,I,J
  1. S I=$O(^DIC(9.4,"C",$P(X,"*"),0)) Q:'I 0
  1. S J=$O(^DIC(9.4,I,22,"B",$P(X,"*",2),0)),X=$P(X,"*",3) Q:'J 0
  1. ;check if patch is just a number
  1. Q:$O(^DIC(9.4,I,22,J,"PAH","B",X,0)) 1
  1. S NUM=$O(^DIC(9.4,I,22,J,"PAH","B",X_" SEQ"))
  1. Q (X=+NUM)
  1. PRE ;EP -
  1. Q
  1. POST ;EP Run the post-init routines
  1. D EVENTS
  1. D INACT
  1. D ADDSYM
  1. D ADDING
  1. S X=$$ADD^XPDMENU("GMRA CLINICIAN MENU","GMRAZ NO ALLERGY ASSESSMENT","8")
  1. I 'X W "Attempt to add GMRA menu option option failed." H 3
  1. Q
  1. EVENTS ;Enter old SNOMED event codes
  1. N ZTDESC,ZTIO,ZTRTN,ZTSAVE,ZTSK,DIR
  1. S ZTRTN="UPDATE^GMRA1007",ZTIO="",ZTSAVE("DUZ")=""
  1. S ZTDESC="Store Event Codes, SNOMEDs and UNIIs on old allergies"
  1. D ^%ZTLOAD
  1. I $G(ZTSK) D
  1. .K ^XTMP("GMRA1007")
  1. .N X,X1,X2 S X1=DT,X2=30
  1. .D C^%DTC
  1. .S ^XTMP("GMRA1007",0)=X_"^"_DT_"^"
  1. .S ^XTMP("GMRA1007","COUNT")=0
  1. .W !!,"A task has been queued in the background."
  1. .W !," The task number is "_$G(ZTSK)_"."
  1. .W !," To check on the status of the task, in programmer mode "
  1. .W !," type D STATUS^GMRA1007"
  1. N X
  1. Q
  1. UPDATE ; Run the post-init
  1. S ^XTMP("GMRA1007","STARTDT")=$$NOW^XLFDT
  1. D EVENT
  1. D BACKLOAD^GMRAZRXU
  1. S ^XTMP("GMRA1007","ENDDT")=$$NOW^XLFDT
  1. D MAIL
  1. Q
  1. EVENT ; EP Populate old allergies with event codes
  1. N IEN,TYPE,CNT,ECNT,EIE,MECH
  1. S CNT=0,ECNT=0
  1. S IEN=0 F S IEN=$O(^GMR(120.8,IEN)) Q:'+IEN D
  1. .S EIE=$$GET1^DIQ(120.8,IEN,22)
  1. .Q:EIE'=""
  1. .I $P($G(^GMR(120.8,IEN,9999999.11)),U,2)="" D
  1. ..S TYPE=$$GET1^DIQ(120.8,IEN,3.1,"I")
  1. ..S MECH=$$GET1^DIQ(120.8,IEN,17,"I")
  1. ..I MECH="" S MECH="U"
  1. ..I TYPE="" S TYPE="O"
  1. ..D ADD(IEN,MECH,TYPE)
  1. Q
  1. ADD(IEN,MECH,TYPE) ;ADD the event code
  1. N SNO,IENS,ERR,SNOIEN,FDA
  1. I MECH="A" D
  1. .S SNO=$S(TYPE="D":"DRUG ALLERGY",TYPE="F":"FOOD ALLERGY",1:"ALLERGY TO SUBSTANCE")
  1. I MECH="P" D
  1. .S SNO=$S(TYPE="D":"DRUG INTOLERANCE",TYPE="F":"FOOD INTOLERANCE",1:"PROPENSITY TO ADVERSE REACTIONS TO SUBSTANCE")
  1. I MECH="U" D
  1. .S SNO=$S(TYPE="D":"PROPENSITY TO ADVERSE REACTIONS TO DRUG",TYPE="F":"FOOD INTOLERANCE",1:"PROPENSITY TO ADVERSE REACTIONS TO SUBSTANCE")
  1. S SNOIEN=$O(^BEHOAR(90460.06,"B",SNO,""))
  1. S IENS=IEN_","
  1. K AIEN,ERR
  1. S FDA(120.8,IENS,9999999.13)=SNOIEN
  1. D UPDATE^DIE("","FDA","AIEN","ERR")
  1. K FDA,AIEN,ERR
  1. Q
  1. STATUS ;check on status of VS xref indexing
  1. I $G(^XTMP("GMRA1007","ENDDT")) D
  1. . N START,END,X,Y
  1. . W !,"Data update completed!"
  1. . S Y=$G(^XTMP("GMRA1007","STARTDT")) D DD^%DT
  1. . W !,"Task started: "_Y
  1. . S Y=$G(^XTMP("GMRA1007","ENDDT")) D DD^%DT
  1. . W !,"Task ended: "_Y
  1. I '$G(^XTMP("GMRA1007","ENDDT")) D
  1. . W !,"Still working on the update."
  1. . I $G(^XTMP("GMRA1007","COUNT"))=0 W !,"You must have tasked it!"
  1. Q
  1. INACT ;EP Remove duplicate toothpaste entries
  1. N IEN,X,SAVE
  1. S SAVE=0
  1. S IEN="" F S IEN=$O(^GMRD(120.82,"B","TOOTHPASTE",IEN)) Q:IEN="" D
  1. .S X=$$CHECK^ORWDAL32(IEN)
  1. .I X=0&(SAVE=0) S SAVE=1
  1. .E I X=0&(SAVE=1) D INAC(IEN)
  1. Q
  1. INAC(IEN) ;Inactivate this entry
  1. K ERR,FDA,NIEN,FNUM
  1. S FNUM=120.8299
  1. S AIEN="+1,"_IEN_","
  1. S FDA(120.8299,AIEN,.01)=$$NOW^XLFDT
  1. S FDA(120.8299,AIEN,.02)=0
  1. D UPDATE^DIE(,"FDA","NIEN","ERR")
  1. I $D(ERR) W !,IENS W ERR("DIERR",1,"TEXT",1) W !
  1. Q
  1. MAIL ;Send completion message to user who initiated post-install
  1. N XMSUB,XMTEXT,XMDUZ,XMY,XMZ,XMMG,TXT,GMRATXT
  1. S XMDUZ="PATCH GMRA*4*1007 Backload event codes",XMY(.5)=""
  1. S:$G(DUZ) XMY(DUZ)=""
  1. S GMRATXT(1)="Backload SNOMED and UNII codes"
  1. S GMRATXT(2)=""
  1. S GMRATXT(3)="Task Started: "_$$FMTE^XLFDT($G(^XTMP("GMRA1007","STARTDT")))
  1. S GMRATXT(4)="Task Ended: "_$$FMTE^XLFDT($G(^XTMP("GMRA1007","ENDDT")))
  1. S GMRATXT(5)=""
  1. S XMTEXT="GMRATXT(",XMSUB="GMRA*4*1007 SNOMED Event backload"
  1. D ^XMD
  1. Q
  1. ADDSYM ;Add new symptom to the file
  1. N XUMF,FDA,IEN,IENS,ERR,FILE,SIEN,SIGN,SYN,SYNIEN
  1. S SIGN="THROAT IRRITATION"
  1. S SYN="ITCHING OF THROAT"
  1. S SIEN=$O(^GMRD(120.83,"B",SIGN,"")) Q:SIEN="" D
  1. .S SYNIEN=$O(^GMRD(120.83,SIEN,2,"B",SYN,"")) Q:SYNIEN'="" D
  1. ..S XUMF=1,FILE=120.832
  1. ..S IENS="+1,"_SIEN_","
  1. ..S FDA(FILE,IENS,.01)=SYN
  1. ..D UPDATE^DIE("","FDA","IENS","ERR")
  1. Q
  1. ADDING ;Add new ingredient to the file
  1. N SULFA,ING,INGIEN,SULIEN,IENS,IEN2,ERR,FDA,FILE,IENS,IN,X,PT,RXNORM,UNII
  1. S SULFA="SULFA DRUGS"
  1. S ING="SULFISOXAZOLE"
  1. S INGIEN="" S INGIEN=$O(^PS(50.416,"B",ING,INGIEN))
  1. Q:INGIEN=""
  1. S SULIEN="" S SULIEN=$O(^GMRD(120.82,"B",SULFA,SULIEN))
  1. Q:SULIEN=""
  1. S XUMF=1,FILE=120.824
  1. ;Continue if its not already there
  1. S ERR=""
  1. I $D(^GMRD(120.82,SULIEN,"ING","B",INGIEN))=0 D
  1. .S IENS="+1,"_SULIEN_","
  1. .S FDA(FILE,IENS,.01)=INGIEN
  1. .D UPDATE^DIE("","FDA","IEN2","ERR")
  1. Q:ERR
  1. ;Next update users with this allergy
  1. S IN=ING_U_"32771^^1"
  1. S X=$$ASSOC^BSTSAPI(IN)
  1. I $P(X,U,2)'=""!($P(X,U,3)'="") D
  1. .S RXNORM=$P(X,U,2),UNII=$P(X,U,3)
  1. S PT="" F S PT=$O(^GMR(120.8,"C",SULFA,PT)) Q:'+PT D
  1. .I $D(^GMR(120.8,PT,2,"B",INGIEN))=0 D
  1. ..K FDA,IENS,IEN2
  1. ..S IENS="+1,"_PT_","
  1. ..S FDA(120.802,IENS,.01)=INGIEN
  1. ..S FDA(120.802,IENS,9999999.01)=RXNORM
  1. ..S FDA(120.802,IENS,9999999.02)=UNII
  1. ..D UPDATE^DIE(,"FDA","IEN2","ERR")
  1. Q