[613] | 1 | GMRAY23 ;SLC/DAN Installation Utilities ;7/18/05 08:06
|
---|
| 2 | ;;4.0;Adverse Reaction Tracking;**23**;Mar 29, 1996
|
---|
| 3 | ;
|
---|
| 4 | ;DBIA SECTION
|
---|
| 5 | ;3744 - $$TESTPAT^VADPT
|
---|
| 6 | ;10061 - VADPT
|
---|
| 7 | ;2916 - DDMOD
|
---|
| 8 | ;10013 - DIK
|
---|
| 9 | ;2056 - DIQ
|
---|
| 10 | ;10018 - DIE
|
---|
| 11 | ;10070 - XMD
|
---|
| 12 | ;10103 - XLFDT
|
---|
| 13 | ;2051 - DIC
|
---|
| 14 | ;2232 - XUDHSET
|
---|
| 15 | ;
|
---|
| 16 | PRETRAN ;Load descriptions for files 120.82 and 120.83
|
---|
| 17 | M @XPDGREF@("GMRADD82")=^DIC(120.82,"%D")
|
---|
| 18 | M @XPDGREF@("GMRADD83")=^DIC(120.83,"%D")
|
---|
| 19 | Q
|
---|
| 20 | ;
|
---|
| 21 | GETERMS ;Make the request for the allergy standardized terms to be pushed to the site
|
---|
| 22 | N TMP,GMRADOM
|
---|
| 23 | S TMP=$$GETIEN^HDISVF09("ALLERGIES",.GMRADOM)
|
---|
| 24 | D EN^HDISVCMR(GMRADOM,"")
|
---|
| 25 | Q
|
---|
| 26 | ;
|
---|
| 27 | POST ;Post installation processes
|
---|
| 28 | N ERR,GMRADONT
|
---|
| 29 | D RESFILE
|
---|
| 30 | D RESDEV
|
---|
| 31 | D FIXREF
|
---|
| 32 | D ^GMRAY23A,^GMRAY23B,^GMRAY23C ;Set up new style xrefs
|
---|
| 33 | ;S GMRADONT=1 ;When GMRADONT is defined, messages are NOT sent to HDR
|
---|
| 34 | D CLN85
|
---|
| 35 | D FIXALG
|
---|
| 36 | D GETERMS
|
---|
| 37 | D MAIL
|
---|
| 38 | Q
|
---|
| 39 | ;
|
---|
| 40 | CLN85 ;Clean up erroneous date/times that are in the STOP DATE OF ADMINISTRATION field of CONCOMITANT DRUG multiple
|
---|
| 41 | N GMRAI,GMRAJ,ENDT
|
---|
| 42 | S GMRAI=0 F S GMRAI=$O(^GMR(120.85,GMRAI)) Q:'+GMRAI I $D(^GMR(120.85,GMRAI,13)) D
|
---|
| 43 | .S GMRAJ=0 F S GMRAJ=$O(^GMR(120.85,GMRAI,13,GMRAJ)) Q:'+GMRAJ D
|
---|
| 44 | ..S ENDT=$P($G(^GMR(120.85,GMRAI,13,GMRAJ,0)),U,3) Q:ENDT=""
|
---|
| 45 | ..I ENDT\1'=ENDT S $P(^GMR(120.85,GMRAI,13,GMRAJ,0),U,3)=ENDT\1 ;If value is date/time strip time
|
---|
| 46 | Q
|
---|
| 47 | ;
|
---|
| 48 | FIXALG ;Loop through 120.8, fix database issues
|
---|
| 49 | N GMRAI,FREE,REACTANT,ENTRY
|
---|
| 50 | 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)
|
---|
| 51 | S GMRAI=0 F S GMRAI=$O(^GMR(120.8,GMRAI)) Q:'+GMRAI D
|
---|
| 52 | .I '$D(^GMR(120.8,GMRAI,0))!($L(^GMR(120.8,GMRAI,0),"^")=1) D DEL Q
|
---|
| 53 | .Q:$$TESTPAT^VADPT($P(^GMR(120.8,GMRAI,0),U)) ;stop if test patient
|
---|
| 54 | .I $D(^GMR(120.8,GMRAI,10)) D CHECKSS ;Check signs/symptoms for broken pointers
|
---|
| 55 | .D CHECK23(.DELETED) Q:$G(DELETED) ;If pieces 2 and 3 cannot be resolved, delete entry
|
---|
| 56 | Q
|
---|
| 57 | ;
|
---|
| 58 | DEL ;No zero node, remove entry
|
---|
| 59 | N DIK,DA
|
---|
| 60 | S DIK="^GMR(120.8,",DA=GMRAI
|
---|
| 61 | D ^DIK
|
---|
| 62 | Q
|
---|
| 63 | ;
|
---|
| 64 | CHECKSS ;Check Signs/Symptoms for broken pointers, delete if necessary
|
---|
| 65 | N GMRAJ,REF,DIK,DA,RIEN
|
---|
| 66 | S GMRAJ=0 F S GMRAJ=$O(^GMR(120.8,GMRAI,10,GMRAJ)) Q:'+GMRAJ D
|
---|
| 67 | .S REF=$P($G(^GMR(120.8,GMRAI,10,GMRAJ,0)),U) ;Pointer to 120.83
|
---|
| 68 | .I REF I $D(^GMRD(120.83,REF)) Q ;Pointer isn't broken - done
|
---|
| 69 | .S DA(1)=GMRAI,DA=GMRAJ,DIK="^GMR(120.8,DA(1),10," D ^DIK ;Remove S/S with broken pointer
|
---|
| 70 | .;If observed reaction then there should be a broken pointer in 120.85
|
---|
| 71 | .S RIEN=$O(^GMR(120.85,"C",GMRAI,0)) Q:'+RIEN
|
---|
| 72 | .S DA(1)=RIEN
|
---|
| 73 | .S DA=$O(^GMR(120.85,RIEN,2,"B",REF,0)) Q:'+DA ;S/S not found
|
---|
| 74 | .S DIK="^GMR(120.85,DA(1),2," D ^DIK ;Remove S/S from obs entry
|
---|
| 75 | Q
|
---|
| 76 | ;
|
---|
| 77 | CHECK23(DELETED) ;Check REACTANT (piece 2) and GMR ALLERGY (piece 3) to make sure they are present and valid
|
---|
| 78 | N REACTANT,ALLPTR,GMRA0,IEN,FILE,DIE,DA,DR,BROKEN
|
---|
| 79 | S DELETED=0
|
---|
| 80 | S GMRA0=$G(^GMR(120.8,GMRAI,0))
|
---|
| 81 | S REACTANT=$P(GMRA0,U,2)
|
---|
| 82 | S ALLPTR=$P(GMRA0,U,3)
|
---|
| 83 | S FILE=$P(ALLPTR,";",2)
|
---|
| 84 | S IEN=$P(ALLPTR,";")
|
---|
| 85 | S BROKEN=$S(ALLPTR="":1,FILE="":1,IEN="":1,1:$G(@("^"_FILE_IEN_",0)"))="")
|
---|
| 86 | I ALLPTR=""!(BROKEN) D Q ;If no pointer present or pointer is broken
|
---|
| 87 | .I REACTANT'="" S $P(^GMR(120.8,GMRAI,0),U,3)=FREE Q ;If REACTANT field has a value then set GMR ALLERGY to "free text" entry
|
---|
| 88 | .I REACTANT="" D DEL S DELETED=1 Q ;If no pointer or broken pointer and no value in REACTANT then delete entry
|
---|
| 89 | Q:DELETED
|
---|
| 90 | I ALLPTR'="",REACTANT="" D ;Pointer exists but no value in REACTANT field
|
---|
| 91 | .S FILE=+$P(@("^"_FILE_"0)"),U,2) ;Get file number
|
---|
| 92 | .S REACTANT=$$GET1^DIQ(FILE,IEN,$S(FILE'=50.67:.01,1:4))
|
---|
| 93 | .S DIE="^GMR(120.8,",DA=GMRAI,DR=".02////"_REACTANT D ^DIE
|
---|
| 94 | Q
|
---|
| 95 | ;
|
---|
| 96 | MAIL ;Send message indicating post install is finished
|
---|
| 97 | N XMSUB,XMTEXT,XMDUZ,XMY,XMZ,GMRATXT,CNT,VADM,DFN,REACTANT,LOOP,DIFROM
|
---|
| 98 | S XMDUZ="PATCH GMRA*4*23 POST-INSTALL",XMY(.5)="" S:$G(DUZ) XMY(DUZ)=""
|
---|
| 99 | S GMRATXT(1)="The post-install routine for patch GMRA*4*23"
|
---|
| 100 | S GMRATXT(2)="finished on "_$$FMTE^XLFDT($$NOW^XLFDT)_"."
|
---|
| 101 | S GMRATXT(3)=""
|
---|
| 102 | S CNT=3
|
---|
| 103 | I $G(ERR)=1 D
|
---|
| 104 | .S GMRATXT(4)="**NOTE: There was a problem with the installation!"
|
---|
| 105 | .S GMRATXT(5)="Required entry missing from file 120.82 - CONVERSION ABORTED.",GMRATXT(6)="Contact the National Help Desk for Immediate assistance."
|
---|
| 106 | S XMTEXT="GMRATXT(",XMSUB="PATCH GMRA*4*23 Post Install COMPLETED"
|
---|
| 107 | D ^XMD
|
---|
| 108 | Q
|
---|
| 109 | ;
|
---|
| 110 | RESFILE ;Restrict file access and update description
|
---|
| 111 | N FILE,J,GMRASEC
|
---|
| 112 | M ^DIC(120.82,"%D")=@XPDGREF@("GMRADD82")
|
---|
| 113 | M ^DIC(120.83,"%D")=@XPDGREF@("GMRADD83")
|
---|
| 114 | F J="DD","WR","DEL","LAYGO","AUDIT" S GMRASEC(J)="@"
|
---|
| 115 | F FILE=120.82,120.83 D
|
---|
| 116 | .S ^DD(FILE,.01,"LAYGO",1,0)="D:'$D(XUMF) EN^DDIOL(""Entries must be added via the Master File Server (MFS)."","""",""!?5,$C(7)"") I $D(XUMF)"
|
---|
| 117 | .S ^DD(FILE,.01,7.5)="I $G(DIC(0))[""L"",'$D(XUMF) K X D EN^DDIOL(""Entries must be edited via the Master File Server (MFS)."","""",""!?5,$C(7)"")"
|
---|
| 118 | .S ^DD(FILE,.01,"DEL",1,0)="D:'$D(XUMF) EN^DDIOL(""Entries must be inactivated via the Master File Server (MFS)."","""",""!?5,$C(7)"") I $D(XUMF)"
|
---|
| 119 | .D FILESEC^DDMOD(FILE,.GMRASEC) ;Force security update to file
|
---|
| 120 | F J=.01,1,2,99.98,99.99 S ^DD(120.82,J,9)="^",^DD(120.83,J,9)="^"
|
---|
| 121 | F J=120.821,120.831 S ^DD(J,.01,9)="^",^DD(J,.02,9)="^"
|
---|
| 122 | F J=120.823,120.824,120.8205 S ^DD(J,.01,9)="^"
|
---|
| 123 | Q
|
---|
| 124 | ;
|
---|
| 125 | RESDEV ;Set up resource device
|
---|
| 126 | N X
|
---|
| 127 | S X=$$RES^XUDHSET("GMRA UPDATE RESOURCE",,1,"Allergy update control")
|
---|
| 128 | Q
|
---|
| 129 | ;
|
---|
| 130 | FIXREF ;Fix new style xrefs so they fire when using DIK to set xrefs for an entry in the file
|
---|
| 131 | N LCV,DIE,DR,DA
|
---|
| 132 | S LCV=0 F S LCV=$O(^DD("IX","IX","AHDR",LCV)) Q:'+LCV S DIE="^DD(""IX"",",DA=LCV,DR=".41///"_"R" D ^DIE
|
---|
| 133 | Q
|
---|