| 1 | GMRAIAL2 ;BPOIFO/JG - BUILD HL7 ORU^R01 MESSAGE FOR ALLERGIES - PART 2 ; 17 Mar 2006  11:55 AM
 | 
|---|
| 2 |  ;;4.0;Adverse Reaction Tracking;**22,23,34**;Mar 29, 1996
 | 
|---|
| 3 |  ; Creates HL7 V2.4 ORU^R01 message for allergy updates & assessments
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  ; This routine uses the following IAs:
 | 
|---|
| 6 |  ;   #4248 - VDEFEL calls        (controlled)
 | 
|---|
| 7 |  ;   #3630 - VAFCQRY calls       (controlled)
 | 
|---|
| 8 |  ;   #4531 - ZERO^PSN50P41       (supported)
 | 
|---|
| 9 |  ;   #2574 - $$CLASS2^PSNAPIS    (supported)
 | 
|---|
| 10 |  ;
 | 
|---|
| 11 |  ; This routine is called as a subroutine by GMRAIAL1
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 |  Q
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 | ENTRY ; Entry point from GMRAIAL1
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  ; Skip to OBX8 if doing an assessment
 | 
|---|
| 18 |  G OBX8:ALTYPE=2
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  ; OBX 1 - Reactant
 | 
|---|
| 21 | OBX1 S S=S+1,OUTX=1_HLFS_"CE"_HLFS_"AGENT"_HLFS
 | 
|---|
| 22 |  S $P(OUTX,HLFS,5)=$$HL7RC^GMRAIAL1($P(ALRDATA,U,2)),$P(OUTX,HLFS,11)=RSLTSTA
 | 
|---|
| 23 |  S X=$P(SITEPARM,U,6)_HLCM_$P(SITEPARM,U,5)_HLCM_"L",$P(OUTX,HLFS,15)=X
 | 
|---|
| 24 |  S OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  ; OBX2 - Allergy Type
 | 
|---|
| 27 | OBX2 S S=S+1,OUTX=1_HLFS_"CE"_HLFS_"ALLERGY TYPE"_HLFS
 | 
|---|
| 28 |  S X=$P(ALRDATA,U,20),VAL=X_HLCM F I=1:1:$L(X) D
 | 
|---|
| 29 |  . S Y=$E(X,I),Y=$S(Y="D":"DRUG",Y="F":"FOOD",Y="O":"OTHER",1:"")
 | 
|---|
| 30 |  . S VAL=VAL_Y S:I<$L(X) VAL=VAL_","
 | 
|---|
| 31 |  S VAL=VAL_HLCM_"L",$P(OUTX,HLFS,5)=VAL,$P(OUTX,HLFS,11)=RSLTSTA
 | 
|---|
| 32 |  S X=$P(SITEPARM,U,6)_HLCM_$P(SITEPARM,U,5)_HLCM_"L",$P(OUTX,HLFS,15)=X
 | 
|---|
| 33 |  S OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
 | 
|---|
| 34 |  ;
 | 
|---|
| 35 |  ; OBX3 - GMR Allergy
 | 
|---|
| 36 |  ;        ALLERGIES FROM VA DRUG CLASS HAVE SPECIAL FORMAT FOR
 | 
|---|
| 37 |  ;        OBX-5
 | 
|---|
| 38 | OBX3 S S=S+1,OUTX=1_HLFS_"CE"_HLFS_"GMR ALLERGY"_HLFS
 | 
|---|
| 39 |  S VAL="",X=$P(ALRDATA,U,3) G OBX4:X=""
 | 
|---|
| 40 |  I X'["50.605" D
 | 
|---|
| 41 |  . S VAL=$P($G(@("^"_$P(X,";",2)_$P(X,";",1)_",0)")),U)
 | 
|---|
| 42 |  . I VAL="" D ERR^VDEFREQ("No data in GMR Allergy file "_$P(X,";",2)_$P(X,";")_",0)") S ZTSTOP=1 Q
 | 
|---|
| 43 |  . I X["PSDRUG" S GMRAVUID=$P(X,";",1)_U_$P(SITEPARM,U,6)_"_"_50
 | 
|---|
| 44 |  . E  D
 | 
|---|
| 45 |  . . S GMRAFILE=+$P($P(X,";",2),"(",2),GMRAIENS=+X_","
 | 
|---|
| 46 |  . . S GMRAVUID=$$GETVUID^GMRAIAL1(GMRAFILE,.01,GMRAIENS,1)
 | 
|---|
| 47 |  . S VAL=$P(GMRAVUID,U)_HLCM_VAL_HLCM_$P(GMRAVUID,U,2)
 | 
|---|
| 48 |  I X["50.605" D
 | 
|---|
| 49 |  . S GMRAIENS=$P(X,";"),Y=$$CLASS2^PSNAPIS(GMRAIENS)
 | 
|---|
| 50 |  . S GMRAVUID=$$GETVUID^GMRAIAL1(50.605,.01,GMRAIENS_",",1)
 | 
|---|
| 51 |  . S VAL=$G(VAL)_$P(GMRAVUID,U)_HLCM_$P(Y,U,2)_HLCM_$P(GMRAVUID,U,2)_HLCM_$P(Y,U)_HLCM_$P(Y,U,2)_HLCM_$P(SITEPARM,U,6)_"_50.605"
 | 
|---|
| 52 |  G RETURN:ZTSTOP
 | 
|---|
| 53 |  S $P(VAL,HLCM,2)=$$HL7RC^GMRAIAL1($P(VAL,HLCM,2)),$P(OUTX,HLFS,5)=VAL,$P(OUTX,HLFS,11)=RSLTSTA ;34
 | 
|---|
| 54 |  S OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 |  ; OBX4 - List of drug ingredients
 | 
|---|
| 57 | OBX4 G OBX5:'$D(^GMR(120.8,KEY,2))
 | 
|---|
| 58 |  S S=S+1,OUTX=1_HLFS_"CE"_HLFS_"DRUG INGREDIENTS"_HLFS
 | 
|---|
| 59 |  S IEN1=0,VAL="" F  S IEN1=$O(^GMR(120.8,KEY,2,IEN1)) Q:'+IEN1  D
 | 
|---|
| 60 |  . S Y=^GMR(120.8,KEY,2,IEN1,0),GMRAVUID=$$GETVUID^GMRAIAL1(50.416,.01,Y_",",1)
 | 
|---|
| 61 |  . D ZERO^PSN50P41(Y,,,"GMRAING") ;34 Gets zero node of ingredient entry from 50.416
 | 
|---|
| 62 |  . S X=$P(GMRAVUID,U)_HLCM_$$HL7RC^GMRAIAL1($P(^TMP($J,"GMRAING",Y,.01),U))_HLCM_$P(GMRAVUID,U,2),VAL=VAL_X_HLRP ;34
 | 
|---|
| 63 |  S VAL=$E(VAL,1,$L(VAL)-1),$P(OUTX,HLFS,5)=VAL,$P(OUTX,HLFS,11)=RSLTSTA
 | 
|---|
| 64 |  S OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
 | 
|---|
| 65 |  ;
 | 
|---|
| 66 |  ; OBX5 - Drug class
 | 
|---|
| 67 | OBX5 G OBX6:'$D(^GMR(120.8,KEY,3))
 | 
|---|
| 68 |  S S=S+1,OUTX=1_HLFS_"CE"_HLFS_"DRUG CLASSES"_HLFS
 | 
|---|
| 69 |  S IEN1=0,VAL="" F  S IEN1=$O(^GMR(120.8,KEY,3,IEN1)) Q:'+IEN1  D
 | 
|---|
| 70 |  . S GMRAIENS=^GMR(120.8,KEY,3,IEN1,0),X=$$CLASS2^PSNAPIS(GMRAIENS)
 | 
|---|
| 71 |  . S GMRAVUID=$$GETVUID^GMRAIAL1(50.605,.01,GMRAIENS_",",1)
 | 
|---|
| 72 |  . S VAL=$G(VAL)_$P(GMRAVUID,U)_HLCM_$$HL7RC^GMRAIAL1($P(X,U,2))_HLCM_$P(GMRAVUID,U,2)_HLCM_$P(X,U)_HLCM_$$HL7RC^GMRAIAL1($P(X,U,2))_HLCM_$P(SITEPARM,U,6)_"_50.605"_HLRP ;34
 | 
|---|
| 73 |  S VAL=$E(VAL,1,$L(VAL)-1),$P(OUTX,HLFS,5)=VAL,$P(OUTX,HLFS,11)=RSLTSTA
 | 
|---|
| 74 |  S OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 |  ; OBX6 - MECHANISM
 | 
|---|
| 77 | OBX6 S X=$P(ALRDATA,U,14) G OBX7:X=""
 | 
|---|
| 78 |  S S=S+1,OUTX=1_HLFS_"CE"_HLFS_"MECHANISM"_HLFS
 | 
|---|
| 79 |  S GMRAVUID=$$GETVUID^GMRAIAL1(120.8,17,X)
 | 
|---|
| 80 |  S VAL=$P(GMRAVUID,U)_HLCM_$S(X="A":"ALLERGY",X="P":"PHARMACOLOGIC",X="U":"UNKNOWN",1:"")_HLCM_$P(GMRAVUID,U,2)
 | 
|---|
| 81 |  S $P(OUTX,HLFS,5)=VAL,$P(OUTX,HLFS,11)=RSLTSTA
 | 
|---|
| 82 |  S OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
 | 
|---|
| 83 |  ;
 | 
|---|
| 84 |  ; OBX7 - Reaction
 | 
|---|
| 85 | OBX7 S IEN1=0 F  S IEN1=$O(^GMR(120.8,KEY,10,IEN1)) Q:'+IEN1  D  Q:ZTSTOP
 | 
|---|
| 86 |  . S S=S+1,OUTX=1_HLFS_"CE"_HLFS_"REACTION"_HLFS
 | 
|---|
| 87 |  . S X=^GMR(120.8,KEY,10,IEN1,0),GMRAVUID=""
 | 
|---|
| 88 |  . S:$P(X,U,2)'="" GMRAVUID="^L"
 | 
|---|
| 89 |  . S:$P(X,U,2)="" $P(X,U,2)=$P($G(^GMRD(120.83,+X,0)),U)
 | 
|---|
| 90 |  . S:GMRAVUID'="^L" GMRAVUID=$$GETVUID^GMRAIAL1(120.83,.01,+X_",",1)
 | 
|---|
| 91 |  . S VAL=$P(GMRAVUID,U)_HLCM_$$HL7RC^GMRAIAL1($P(X,U,2))_HLCM_$P(GMRAVUID,U,2) ;34
 | 
|---|
| 92 |  . S $P(OUTX,HLFS,5)=VAL,$P(OUTX,HLFS,11)=RSLTSTA
 | 
|---|
| 93 |  . S $P(OUTX,HLFS,14)=$$TS^VDEFEL($P(X,U,4))
 | 
|---|
| 94 |  . S XX=$$XCN200^VDEFEL($P(X,U,3)) ;34
 | 
|---|
| 95 |  . F II=2:1:7 S $P(XX,SEPC,II)=$$HL7RC^GMRAIAL1($P(XX,SEPC,II)) ;34
 | 
|---|
| 96 |  . S $P(OUTX,HLFS,16)=XX ;34
 | 
|---|
| 97 |  . S OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
 | 
|---|
| 98 |  ;
 | 
|---|
| 99 |  ; Skip assessment if allergy update
 | 
|---|
| 100 |  G OBX9:ALTYPE=1
 | 
|---|
| 101 |  ;
 | 
|---|
| 102 |  ; OBX8 - Assessment
 | 
|---|
| 103 | OBX8 S S=S+1,OUTX=1_HLFS_"CE"_HLFS_"ASSESSMENT"_HLFS
 | 
|---|
| 104 |  I +ENTERR=1 S VAL=HLCM_"ENTERED IN ERROR"_HLCM G OBX8A ;34
 | 
|---|
| 105 |  S X=+$P(ALRDATA,U,2),GMRAVUID=$$GETVUID^GMRAIAL1(120.86,1,X)
 | 
|---|
| 106 |  S VAL=$P(GMRAVUID,U)_HLCM_$S(X=0:"NO KNOWN ALLERGIES",X=1:"YES",1:"")
 | 
|---|
| 107 |  S VAL=VAL_HLCM_$P(GMRAVUID,U,2)
 | 
|---|
| 108 | OBX8A S $P(OUTX,HLFS,5)=VAL,$P(OUTX,HLFS,11)=$E("FW",1+ENTERR) ;34
 | 
|---|
| 109 |  I '+ENTERR S $P(OUTX,HLFS,14)=$$TS^VDEFEL($P(ALRDATA,U,4))
 | 
|---|
| 110 |  I '+ENTERR D  ;Block added in 34
 | 
|---|
| 111 |  . S XX=$$XCN200^VDEFEL($P(ALRDATA,U,3))
 | 
|---|
| 112 |  . F II=2:1:7 S $P(XX,SEPC,II)=$$HL7RC^GMRAIAL1($P(XX,SEPC,II))
 | 
|---|
| 113 |  . S $P(OUTX,HLFS,16)=XX
 | 
|---|
| 114 |  S OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
 | 
|---|
| 115 |  ;
 | 
|---|
| 116 |  ; Done if assessment
 | 
|---|
| 117 |  G RETURN:ALTYPE=2
 | 
|---|
| 118 |  ;
 | 
|---|
| 119 |  ; OBX9 - Comments
 | 
|---|
| 120 |  ; One OBX for each comment
 | 
|---|
| 121 | OBX9 S IEN=0 F  S IEN=$O(^GMR(120.8,KEY,26,IEN)) Q:'+IEN  D
 | 
|---|
| 122 |  . S ALRDATA=$G(^GMR(120.8,KEY,26,IEN,0)) G RETURN:ALRDATA=""
 | 
|---|
| 123 |  . ; Set up the static fields
 | 
|---|
| 124 |  . S X1=1_HLFS_"TX"_HLFS_"COMMENT"_HLFS
 | 
|---|
| 125 |  . S XX=$$XCN200^VDEFEL($P(ALRDATA,U,2)) ;34
 | 
|---|
| 126 |  . F II=2:1:7 S $P(XX,SEPC,II)=$$HL7RC^GMRAIAL1($P(XX,SEPC,II)) ;34
 | 
|---|
| 127 |  . S $P(X1,HLFS,11)=RSLTSTA,$P(X1,HLFS,16)=XX ;34
 | 
|---|
| 128 |  . S $P(X1,HLFS,19)=$$TS^VDEFEL($P(ALRDATA,U)),X=$P(ALRDATA,U,3)
 | 
|---|
| 129 |  . S GMRAVUID=$$GETVUID^GMRAIAL1(120.826,1.5,X)
 | 
|---|
| 130 |  . S $P(X,HLCM,2)=$S(X="V":"VERIFIED",X="O":"OBSERVED",X="E":"ERRORED",1:"")
 | 
|---|
| 131 |  . S $P(X,HLCM)=+GMRAVUID,$P(X,HLCM,3)=$P(GMRAVUID,U,2)
 | 
|---|
| 132 |  . S $P(X1,HLFS,17)=X
 | 
|---|
| 133 |  . ;
 | 
|---|
| 134 |  . ; A comment may be more than one line
 | 
|---|
| 135 |  . S IEN1=0,VAL="" F  S IEN1=$O(^GMR(120.8,KEY,26,IEN,2,IEN1)) Q:'+IEN1  D
 | 
|---|
| 136 |  . . S X=$$HL7RC^GMRAIAL1(^GMR(120.8,KEY,26,IEN,2,IEN1,0)),VAL=VAL_X_HLRP
 | 
|---|
| 137 |  . S:$E(VAL,$L(VAL))=HLRP VAL=$E(VAL,1,$L(VAL)-1)
 | 
|---|
| 138 |  . S OUTX=X1,$P(OUTX,HLFS,5)=VAL
 | 
|---|
| 139 |  . S S=S+1,OUTX="OBX"_HLFS_OUTX D SAVE^GMRAIAL1
 | 
|---|
| 140 |  ;
 | 
|---|
| 141 |  ; Return to GMRAIAL1
 | 
|---|
| 142 | RETURN Q
 | 
|---|