| 1 | GMRAUTL ;HIRMFO/YMP,RM,WAA-ALLERGY UTILITIES ;7/28/03  08:40
 | 
|---|
| 2 |  ;;4.0;Adverse Reaction Tracking;**17**;Mar 29, 1996
 | 
|---|
| 3 | DEV ;Device selecting module
 | 
|---|
| 4 |  W !
 | 
|---|
| 5 |  S GMRAZIS=$G(GMRAZIS)
 | 
|---|
| 6 |  S IOP="Q",%ZIS("B")=""
 | 
|---|
| 7 |  S %ZIS="NQ" I GMRAZIS'["Q",GMRAZIS'["M132" S %ZIS("B")="HOME" K IOP
 | 
|---|
| 8 |  D ^%ZIS I POP K GMRAZIS Q  ; Select the device (not open)
 | 
|---|
| 9 |  I '$D(IO("S")) D  I POP S POP=0 G DEV
 | 
|---|
| 10 |  .I $E(IOST)="P",'$D(IO("Q")) W !?4,$C(7),"PRINTED REPORTS MUST BE QUEUED.",! S POP=1
 | 
|---|
| 11 |  .Q
 | 
|---|
| 12 |  I $G(GMRAZIS)?.E1"M"1N.E D  I POP S POP=0 G DEV
 | 
|---|
| 13 |  .I IOM<+$P(GMRAZIS,"M",2) W !!?4,$C(7),"THIS REPORT MUST BE SENT TO A PRINTER WITH A MARGIN OF AT LEAST "_+$P(GMRAZIS,"M",2)_"." S POP=1
 | 
|---|
| 14 |  .Q
 | 
|---|
| 15 |  I $G(GMRAZIS)?.E1"S"1N.E D  I POP S POP=0 G DEV
 | 
|---|
| 16 |  . I IOSL<+$P(GMRAZIS,"S",2) W !!?4,$C(7),"THIS REPORT MUST BE SENT TO A PRINTER WITH PAGE LENGTH OF AT LEAST "_+$P(GMRAZIS,"S",2)_"." S POP=1
 | 
|---|
| 17 |  .Q
 | 
|---|
| 18 |  I '$D(IO("Q")) S IOP=ION_";"_IOST_";"_IOM_";"_IOSL,%ZIS="" D ^%ZIS I POP G DEV ; Open the device
 | 
|---|
| 19 |  K GMRAZIS
 | 
|---|
| 20 |  Q
 | 
|---|
| 21 | CLOSE ; Close device, and dequeue if queued.
 | 
|---|
| 22 |  I 'GMRAOUT D ENDPG^GMRADSP3
 | 
|---|
| 23 |  W ! D ^%ZISC
 | 
|---|
| 24 |  I $D(ZTQUEUED) S ZTREQ="@"
 | 
|---|
| 25 |  Q
 | 
|---|
| 26 | SITE ; GET SITE PARAMTER NODE
 | 
|---|
| 27 |  S GMRASITE=$O(^GMRD(120.84,"SITE",+$G(DUZ(2)),0))
 | 
|---|
| 28 |  I 'GMRASITE S GMRASITE=$O(^GMRD(120.84,"B","HOSPITAL",0)) I 'GMRASITE S GMRASITE=$O(^GMRD(120.84,0)) I 'GMRASITE S GMRASITE=1
 | 
|---|
| 29 |  Q
 | 
|---|
| 30 | LOCK(X,Y,Z) ; LOCKS ^GMR(X,Y,0).  IF IT CAN RETURNS 1, ELSE RETURNS 0
 | 
|---|
| 31 |  ; OPTIONAL PAR. Z IF EXISTS AND TRUE WILL PRINT ERROR MSG IF NO LOCK
 | 
|---|
| 32 |  L +^GMR(X,Y,0):1
 | 
|---|
| 33 |  E  W:$G(Z) !,$C(7),"THIS ENTRY BEING EDITED, TRY LATER."
 | 
|---|
| 34 |  Q $T
 | 
|---|
| 35 | UNLOCK(X,Y) ; UNLOCKS ^GMR(X,Y,0)
 | 
|---|
| 36 |  L -^GMR(X,Y,0)
 | 
|---|
| 37 |  Q
 | 
|---|
| 38 | OUTTYPE(GMRAY) ; INPUT VARIABLE IS INTERNAL FORMAT OF TYPE FIELD FOR
 | 
|---|
| 39 |  ; FILES 120.8 AND 120.82.  THIS FUNCTION RETURNS OUTPUT VALUE
 | 
|---|
| 40 |  ; FOR THAT FIELD.
 | 
|---|
| 41 |  N FXN,X S FXN=""
 | 
|---|
| 42 |  F X=1:1:$L(GMRAY) S FXN=FXN_$S(FXN="":"",1:", ")_$P("^FOOD^DRUG^OTHER","^",$F("FDO",$E(GMRAY,X)))
 | 
|---|
| 43 |  Q FXN
 | 
|---|
| 44 | INPTYPE(GMRAEN) ; THIS PROCEDURE WILL ALLOW USER TO EDIT TYPE FIELD FOR
 | 
|---|
| 45 |  ; FILE AND ENTRY DESIGNATED IN GMRAEN.  GMRAEN IS IN VARIABLE PTR.
 | 
|---|
| 46 |  ; FORMAT.
 | 
|---|
| 47 |  Q:'+GMRAEN!("^GMRD(120.82,^GMR(120.8,^"'[("^"_$P(GMRAEN,";",2)_"^"))
 | 
|---|
| 48 |  N DIE,DA,DR,GMRADEF
 | 
|---|
| 49 |  S DIE="^"_$P(GMRAEN,";",2),DA=+GMRAEN,DR=$S(DIE[120.82:1,1:3.1)_"////"
 | 
|---|
| 50 |  S GMRADEF=$P($G(@(DIE_DA_",0)")),"^",$S(DIE[120.82:2,1:20))
 | 
|---|
| 51 |  D EDTTYPE(.GMRADEF)
 | 
|---|
| 52 |  I "^^"[GMRADEF Q
 | 
|---|
| 53 |  S DR=DR_GMRADEF D ^DIE
 | 
|---|
| 54 |  Q
 | 
|---|
| 55 | EDTTYPE(GMRADEF) ; THIS PROCEDURE WILL ALLOW EMULATE THE EDITING OF
 | 
|---|
| 56 |  ; TYPE FIELD.  GMRADEF IS THE VARIABLE THAT WILL BE RETURNED, AND MUST
 | 
|---|
| 57 |  ; BE PASSED BY REFERENCE.  IT SHOULD BE SET TO THE DEFAULT VALUE OF
 | 
|---|
| 58 |  ; THE TYPE PRIOR TO THE EDIT AND WILL BE RETURNED AS THE NEW VALUE.
 | 
|---|
| 59 |  ; GMRAOUT WILL BE SET TO 1 IF USER ABNORMALLY EXITS.
 | 
|---|
| 60 |  Q:'$D(GMRADEF)
 | 
|---|
| 61 |  N DIR,X,Y
 | 
|---|
| 62 |  I GMRADEF'="" D
 | 
|---|
| 63 |  .   S X=""
 | 
|---|
| 64 |  .   I GMRADEF["D" S X=1
 | 
|---|
| 65 |  .   I GMRADEF["F" S X=X_$S(X="":"",1:",")_2
 | 
|---|
| 66 |  .   I GMRADEF["O" S X=X_$S(X="":"",1:",")_3
 | 
|---|
| 67 |  .   S GMRADEF=X
 | 
|---|
| 68 |  .   Q
 | 
|---|
| 69 | ASKTYP ; This line is where the query for type begins.
 | 
|---|
| 70 |  S DIR(0)="LA^1:3",DIR("A",1)="  1   Drug",DIR("A",2)="  2   Food",DIR("A",3)="  3   Other",DIR("A")="Select Classification(s) of Causative Agent: " S:GMRADEF'="" DIR("B")=GMRADEF
 | 
|---|
| 71 |  S DIR("?")="This response must be a list or a range, e.g., 1,3 or 1-3."
 | 
|---|
| 72 |  D ^DIR
 | 
|---|
| 73 |  I $D(DIRUT) S GMRADEF="",GMRAOUT=1 Q
 | 
|---|
| 74 |  S GMRADEF="" F X=1:1:3 I Y[X S GMRADEF=GMRADEF_$E("DFO",X)
 | 
|---|
| 75 |  Q
 | 
|---|
| 76 | INTTYPE(GMRAX) ; INPUT VARIABLE IS INTERNAL VALUE OF TYPE FIELD FOR FILES
 | 
|---|
| 77 |  ; 120.8 AND 120.82.  THIS PROCEDURE WILL KILL GMRAX IF IT IS INVALID,
 | 
|---|
| 78 |  ; OR WILL RETURN GMRAX IN ITS PROPER FORMAT.  GMRAX MUST BE PASSED BY
 | 
|---|
| 79 |  ; REFERENCE.
 | 
|---|
| 80 |  N FXN S FXN=1
 | 
|---|
| 81 |  I $L(GMRAX)>3 D  ; take text entry ($L>3) and codify or reject
 | 
|---|
| 82 |  .   N I,J,K
 | 
|---|
| 83 |  .   S K="" F I=1:1 S J=$TR($$UP^XLFSTR($P(GMRAX,",",I))," ") Q:J=""  D
 | 
|---|
| 84 |  .   .   I "^DRUG^FOOD^OTHER^"[("^"_J_"^") S J=$E(J) I K'[J S K=$S(J="D":J_K,J="F":$E("D",K["D")_J_$E("O",K["O"),1:K_J)
 | 
|---|
| 85 |  .   .   E  S FXN=0
 | 
|---|
| 86 |  .   .   Q
 | 
|---|
| 87 |  .   I FXN S GMRAX=K
 | 
|---|
| 88 |  .   Q
 | 
|---|
| 89 |  E  D  ; take coded entry ($L'>3) and validates/formats
 | 
|---|
| 90 |  .   I $L($TR(GMRAX,"DFO"))!'$L(GMRAX)!($L(GMRAX,"D")>2)!($L(GMRAX,"F")>2)!($L(GMRAX,"O")>2) S FXN=0 Q
 | 
|---|
| 91 |  .   S GMRAX=$E("D",GMRAX["D")_$E("F",GMRAX["F")_$E("O",GMRAX["O")
 | 
|---|
| 92 |  .   Q
 | 
|---|
| 93 |  I 'FXN K GMRAX
 | 
|---|
| 94 |  Q
 | 
|---|
| 95 | ASK(GMRATYPE,GMRAOUT,GMRASP) ;Answer yes or no to data type questions
 | 
|---|
| 96 |  N DIR,Y,X
 | 
|---|
| 97 |  S DIR(0)="YA",DIR("A")=GMRATYPE
 | 
|---|
| 98 |  S DIR("B")=$S(GMRASP=0:"NO",1:"YES") D ^DIR
 | 
|---|
| 99 |  S:$D(DIRUT) GMRAOUT=1,GMRASP=0
 | 
|---|
| 100 |  S:'GMRAOUT GMRASP=Y
 | 
|---|
| 101 |  Q
 | 
|---|