| 1 | GMRAFX1 ;SLC/DAN Fix existing allergy entries-continued ;10/6/05  11:42
 | 
|---|
| 2 |  ;;4.0;Adverse Reaction Tracking;**17,19,20**;Mar 29, 1996;Build 1
 | 
|---|
| 3 |  ;DBIA SECTION
 | 
|---|
| 4 |  ;10116 - VALM1
 | 
|---|
| 5 |  ;10102 - XQORM1
 | 
|---|
| 6 |  ;10104 - XLFSTR
 | 
|---|
| 7 |  ;10061 - VADPT
 | 
|---|
| 8 |  ;10017 - VALM10
 | 
|---|
| 9 |  ;10118 - VALM
 | 
|---|
| 10 |  ;10026 - DIR
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 | DET ;Detailed listing of selected group
 | 
|---|
| 13 |  N DIR,Y,DTOUT,DUOUT,DIRUT,J,GMRAT,GMRAUT,DFN,GMRA,GMRAL,VADM,CNT,VAERR,K,LEN,NAME,ENTRY,NMBR2,ENMBR,GMRAR
 | 
|---|
| 14 |  S VALMBCK="R",CNT=0
 | 
|---|
| 15 |  K ^TMP($J,LTYPE,"GMRADET"),^TMP($J,LTYPE,"IDX2")
 | 
|---|
| 16 |  S ENMBR=+NMBR ;get number portion of entry
 | 
|---|
| 17 |  S ENTRY=0
 | 
|---|
| 18 |  S GMRAUT=$P(^XTMP("GMRAFX",LTYPE,"IDX",ENMBR),"^"),GMRAT=$P(^XTMP("GMRAFX",LTYPE,"IDX",ENMBR),"^",2)
 | 
|---|
| 19 |  S J=0 F  S J=$O(^XTMP("GMRAFX",LTYPE,"GMRAR",GMRAUT,GMRAT,J)) Q:'+J  D
 | 
|---|
| 20 |  .S DFN=$P($G(^GMR(120.8,J,0)),"^"),GMRA="0^0^111" D ^GMRADPT ;Get patient allergies
 | 
|---|
| 21 |  .D DEM^VADPT ;Get patient information
 | 
|---|
| 22 |  .Q:$G(VAERR)  ;Quit if patient lookup produces an error
 | 
|---|
| 23 |  .S CNT=CNT+1,ENTRY=ENTRY+1
 | 
|---|
| 24 |  .S GMRAR(CNT)=VADM(1)_$$REPEAT^XLFSTR(" ",(32-$L(VADM(1))))_$E(VADM(2),6,9)_" "
 | 
|---|
| 25 |  .D SET^VALM10(CNT,ENTRY_$$REPEAT^XLFSTR(" ",(4-$L(ENTRY)))_GMRAR(CNT)) K GMRAR(CNT) ;19
 | 
|---|
| 26 |  .S ^TMP($J,LTYPE,"IDX2",ENTRY)=CNT_"^"_J
 | 
|---|
| 27 |  .S CNT=CNT+1,LEN=0,GMRAR(CNT)="Allergies: "
 | 
|---|
| 28 |  .S K=0 F  S K=$O(GMRAL(K)) Q:'+K  D
 | 
|---|
| 29 |  ..S NAME=$P(GMRAL(K),"^",2) ;Allergy name
 | 
|---|
| 30 |  ..S LEN=LEN+$L(NAME)+1
 | 
|---|
| 31 |  ..I LEN>70 D SET^VALM10(CNT,GMRAR(CNT)) K GMRAR(CNT) S CNT=CNT+1,LEN=$L(NAME)+1,GMRAR(CNT)="   " ;19
 | 
|---|
| 32 |  ..S GMRAR(CNT)=$G(GMRAR(CNT))_NAME_$S($O(GMRAL(K)):"~",1:"") D:'$O(GMRAL(K)) SET^VALM10(CNT,GMRAR(CNT)) ;19
 | 
|---|
| 33 |  S VALMCNT=CNT,^TMP($J,LTYPE,"IDX2",0)=ENTRY
 | 
|---|
| 34 |  Q
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 | HDR ; -- header code
 | 
|---|
| 37 |  S VALMHDR(1)="Patient listing for reactant "_$S(+$G(NMBR):$P(^XTMP("GMRAFX",LTYPE,"IDX",+NMBR),"^"),1:"")
 | 
|---|
| 38 |  Q
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 | PHDR ;
 | 
|---|
| 41 |  S VALMSG="Select a patient"
 | 
|---|
| 42 |  S XQORM("#")=$$FIND1^DIC(101,,"BX","GMRA FIX DETAIL MENU") ;19
 | 
|---|
| 43 |  D SHOW^VALM
 | 
|---|
| 44 |  Q
 | 
|---|
| 45 |  ;
 | 
|---|
| 46 | INIT ; -- init variables and list array
 | 
|---|
| 47 |  N DIR
 | 
|---|
| 48 |  I '$G(NMBR) S NMBR=$$GETNUM^GMRAFX3("DET") S:'+NMBR VALMQUIT="" Q:'+NMBR  I '$$LOCK^GMRAFX3(+NMBR) S VALMQUIT="" Q
 | 
|---|
| 49 |  I $L($G(NMBR),",")>2 D FULL^VALM1 W !,"Please select",$S('$G(NMBR):"",1:" only")," one entry from the list." S DIR(0)="E",DIR("A")="Press enter to continue" D ^DIR S VALMQUIT=1 Q
 | 
|---|
| 50 |  K ^TMP($J,LTYPE,"GMRADET"),^TMP($J,LTYPE,"IDX2")
 | 
|---|
| 51 |  S VALMBCK="",VALMBG=$G(VALMBG,1),VALMCNT=0,VALMWD=80
 | 
|---|
| 52 |  Q
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 | CHKSEL ;Evaluate selection if done by number
 | 
|---|
| 55 |  N J,TMP,DIR,NUM,X,Y
 | 
|---|
| 56 |  S NUM=$P($G(XQORNOD(0)),"=",2) ;get currently selected entries
 | 
|---|
| 57 |  I NUM'="" D
 | 
|---|
| 58 |  .I NUM=$G(NMBR2) D DESELECT Q  ;If user selects same entry without taking an entry, unhighlight and stop processing
 | 
|---|
| 59 |  .D DESELECT:$G(NMBR2) ;If user previously selected entries but took no action, unhighlight before highlighting new choices
 | 
|---|
| 60 |  .S NMBR2=$P(XQORNOD(0),"=",2),DIR(0)="L^"_"1:"_$G(^TMP($J,LTYPE,"IDX2",0)),X=NMBR2,DIR("V")="" D ^DIR K DIR
 | 
|---|
| 61 |  .I Y="" D FULL^VALM1 W !,"Invalid selection." D WAIT^GMRAFX3 K NMBR2 Q  ;Selection out of range, stop processing
 | 
|---|
| 62 |  .F J=1:1:$L(NMBR2,",")-1 S TMP=$P(NMBR2,",",J) D CNTRL^VALM10(+^TMP($J,LTYPE,"IDX2",TMP),1,+$G(VALMWD),IORVON,IORVOFF)
 | 
|---|
| 63 |  Q
 | 
|---|
| 64 |  ;
 | 
|---|
| 65 | DESELECT ;Un-highlight selected choices
 | 
|---|
| 66 |  N J,TMP
 | 
|---|
| 67 |  F J=1:1:$L($G(NMBR2),",")-1 S TMP=$P(NMBR2,",",J) D CNTRL^VALM10(+^TMP($J,LTYPE,"IDX2",TMP),1,+$G(VALMWD),IORVOFF,IORVOFF)
 | 
|---|
| 68 |  K NMBR2
 | 
|---|
| 69 |  Q
 | 
|---|
| 70 | HELP ; -- help code
 | 
|---|
| 71 |  D FULL^VALM1
 | 
|---|
| 72 |  W !!,"Use AE to add local allergies to the GMR ALLERGY file.  This",!,"should only be done if you're sure no existing reactant matches your needs."
 | 
|---|
| 73 |  W !!,"Use EE to mark all selected entries as entered",!,"in error.  You may select multiple patients if you like."
 | 
|---|
| 74 |  W !!,"Use UR to update the reactant.  Extreme caution should be used when updating",!,"reactants.  You may select multiple patients if you like,"
 | 
|---|
| 75 |  W !!,"Use PR to add new allergies for the selected patient in",!,"addition to the ones listed here."
 | 
|---|
| 76 |  W !!,"Use DD to get details about the allergy entry that you're",!,"currently working on for this patient.",!
 | 
|---|
| 77 |  D WAIT^GMRAFX3 S VALMBCK="R"
 | 
|---|
| 78 |  Q
 | 
|---|
| 79 |  ;
 | 
|---|
| 80 | EXIT ; -- exit code
 | 
|---|
| 81 |  K ^TMP($J,LTYPE,"IDX2"),^TMP($J,LTYPE,"GMRADET")
 | 
|---|
| 82 |  Q
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 | EXPND ; -- expand code
 | 
|---|
| 85 |  Q
 | 
|---|
| 86 |  ;
 | 
|---|
| 87 | PROCESS(TYPE) ;API to mark selected entries from the detailed listing as entered in error or update to new reactant
 | 
|---|
| 88 |  N GMRAPA,GMRAJ,DIR,Y,NUM,GMRADONE,ENTRY,GMRAI,STOP,NUM2,GMRAAR
 | 
|---|
| 89 |  S VALMBCK="R" D FULL^VALM1
 | 
|---|
| 90 |  I '$G(NMBR2) S NMBR2=$$GETNUM^GMRAFX3("") Q:'+NMBR2
 | 
|---|
| 91 |  W !!,"You are about to ",$S(TYPE="E":"mark",1:"update")," the selected patient",$S($L(NMBR2,",")>2:"s'",1:"'s"),!
 | 
|---|
| 92 |  S ENTRY=$G(^XTMP("GMRAFX",LTYPE,"IDX",+NMBR))
 | 
|---|
| 93 |  W $P(ENTRY,"^",2)," allergy ",$S(TYPE="E":"as entered in error.",1:"to a new reactant."),!
 | 
|---|
| 94 |  S DIR(0)="Y",DIR("B")="NO",DIR("A")="ARE YOU SURE"
 | 
|---|
| 95 |  S DIR("?")="Once allergies are updated or marked as entered in error it cannot be undone!"
 | 
|---|
| 96 |  S DIR("?",1)="Be sure this is what you want to do."
 | 
|---|
| 97 |  D ^DIR Q:Y'=1  ;Stop if user doesn't answer yes
 | 
|---|
| 98 |  S NUM=+NMBR
 | 
|---|
| 99 |  F GMRAI=1:1:($L(NMBR2,",")-1) D  Q:$G(STOP)
 | 
|---|
| 100 |  .S GMRADONE=1
 | 
|---|
| 101 |  .S NUM2=$P(NMBR2,",",GMRAI)
 | 
|---|
| 102 |  .S (GMRAPA,GMRAJ)=$P(^TMP($J,LTYPE,"IDX2",NUM2),U,2) Q:'GMRAPA
 | 
|---|
| 103 |  .D @$S(TYPE="E":"EIE^GMRAFX",1:"UIE^GMRAFX3")
 | 
|---|
| 104 |  .D:$G(GMRADONE) UPDATE^GMRAFX3
 | 
|---|
| 105 |  Q
 | 
|---|