| 1 | GMRAOR4 ;HIRMFO/WAA,FPT-OERR HL7 UTILITY ; 2/9/95
 | 
|---|
| 2 |  ;;4.0;Adverse Reaction Tracking;**4,16**;Oct 10, 2000
 | 
|---|
| 3 |  ;MSG = HL7 Message array
 | 
|---|
| 4 |  ;GMRANODE = IEN of MSG array
 | 
|---|
| 5 |  ;GMRAND = Date from MSG(GMRANODE)
 | 
|---|
| 6 |  ;GMRAMTP = Message type
 | 
|---|
| 7 | EN1(MSG) ; MSG is the array that is passed to ART should be pass by
 | 
|---|
| 8 |  ; reference
 | 
|---|
| 9 |  N GMRANODE,GMRAND,GMRAMTP
 | 
|---|
| 10 |  S GMRANODE=0
 | 
|---|
| 11 |  F  S GMRANODE=$O(MSG(GMRANODE)) Q:GMRANODE<1  D
 | 
|---|
| 12 |  .S GMRAND=MSG(GMRANODE),GMRAMTP=$E(GMRAND,1,3)
 | 
|---|
| 13 |  .I "^MSH^PID^PV1^AL1^ZAL^ZAO^ZAS^NTE^"'[("^"_GMRAMTP_"^") S GMRAMTP="ERROR"
 | 
|---|
| 14 |  .D @GMRAMTP
 | 
|---|
| 15 |  .Q
 | 
|---|
| 16 |  K %,DL1,DL2,DL3,DL4,DL4,GMRAI,GMRAID,GMRAIDC,GMRAIDN,GMRAIDO,GMRAIDS,I
 | 
|---|
| 17 |  D EN1^GMRAOR5
 | 
|---|
| 18 |  K GMRADFN,GMRAL
 | 
|---|
| 19 |  Q
 | 
|---|
| 20 | MSH ;Message Header Information
 | 
|---|
| 21 |  ;Set up delimiters DL1-DL5
 | 
|---|
| 22 |  N GMRADL
 | 
|---|
| 23 |  F I=1:1:5 S GMRADL="DL"_I,@GMRADL=$E(GMRAND,(3+I)) ; Assign all delimiters
 | 
|---|
| 24 |  Q
 | 
|---|
| 25 | PID ;Patient Id Information
 | 
|---|
| 26 |  ;GMRADFN = DFN of patient in ^DPT(DFN) Patient (2) file
 | 
|---|
| 27 |  S GMRADFN=$P(GMRAND,DL1,4)
 | 
|---|
| 28 |  Q
 | 
|---|
| 29 | PV1 ;Allergy Information
 | 
|---|
| 30 |  Q
 | 
|---|
| 31 | AL1 ;Allergy informaton
 | 
|---|
| 32 |  ;building GMRAL Array to be used to stuff only new data
 | 
|---|
| 33 |  ;GMRAID=sequence number of allergy
 | 
|---|
| 34 |  ;~=continuation
 | 
|---|
| 35 |  ;     Allergy AL1 Segment
 | 
|---|
| 36 |  ;   GMRAL(GMRAID)=type^file ien^VA Free text drug^file^OERR entry date^~
 | 
|---|
| 37 |  ;   GMRAL(1)="D^5^SHELL FISH^99ALL^2940415.06^~
 | 
|---|
| 38 |  ;     ZAL Segment
 | 
|---|
| 39 |  ;   GMRAL(GMRAID)=~NKA Status^Originator Pt to 200^Observed/Historical
 | 
|---|
| 40 |  ;   GMRAL(1)=~y^1270^o"
 | 
|---|
| 41 |  S GMRAID=$P(GMRAND,DL1,2)
 | 
|---|
| 42 |  S %=$P(GMRAND,DL1,3)
 | 
|---|
| 43 |  S %=$S(%="DA":"D",%="FA":"F",%="MA":"O",%="MC":"O",%="AT":"DFO","^DF^DO^FO^"["^"_%_"^":%,1:"")
 | 
|---|
| 44 |  S GMRAL(GMRAID)=%
 | 
|---|
| 45 |  S %="" F GMRAI=4:1:6 S %=%_U_$P($P(GMRAND,DL1,4),DL2,GMRAI)
 | 
|---|
| 46 |  S GMRAL(GMRAID)=GMRAL(GMRAID)_%
 | 
|---|
| 47 |  S %=$$HL7TFM^XLFDT($P(GMRAND,DL1,7))
 | 
|---|
| 48 |  S GMRAL(GMRAID)=GMRAL(GMRAID)_U_%
 | 
|---|
| 49 |  Q
 | 
|---|
| 50 | ZAL ;Allergy type information
 | 
|---|
| 51 |  S GMRAL(GMRAID)=GMRAL(GMRAID)_U_$S($P(GMRAND,DL1,3)="YES":"n",$P(GMRAND,DL1,3)="NO":"y",1:"")_U_$P(GMRAND,DL1,4)
 | 
|---|
| 52 |  S GMRAL(GMRAID)=GMRAL(GMRAID)_U_$S($P(GMRAND,DL1,5)="OB":"o",$P(GMRAND,DL1,5)="HI":"h",1:"")
 | 
|---|
| 53 |  Q
 | 
|---|
| 54 | ZAO ;Observed allergy information
 | 
|---|
| 55 |  ;GMRAIDO = Sequence #
 | 
|---|
| 56 |  ;   ZAO Observed reaction section
 | 
|---|
| 57 |  ; GMRAL(GMRAID,"O",GMRAIDO)=Observed date^Severity^Observer's DUZ
 | 
|---|
| 58 |  ; GMRAL(1,"O",1)="2940401.1^3^1234"
 | 
|---|
| 59 |  ;S GMRAIDO=$P(GMRAND,DL1,2)
 | 
|---|
| 60 |  S GMRAIDO=1
 | 
|---|
| 61 |  S %=$$HL7TFM^XLFDT($P(GMRAND,DL1,3))
 | 
|---|
| 62 |  S GMRAL(GMRAID,"O",GMRAIDO)=%
 | 
|---|
| 63 |  S %=$P(GMRAND,DL1,4)
 | 
|---|
| 64 |  S GMRAL(GMRAID,"O",GMRAIDO)=GMRAL(GMRAID,"O",GMRAIDO)_U_$S(%="MI":1,%="MO":2,%="SV":3,1:"")_U_$P(GMRAND,DL1,5)
 | 
|---|
| 65 |  Q
 | 
|---|
| 66 | ZAS ;Allergy Signs/Symptoms
 | 
|---|
| 67 |  ;GMRAIDS = Sequence #
 | 
|---|
| 68 |  ;   ZAS Observed reaction section
 | 
|---|
| 69 |  ; GMRAL(GMRAID,"S",GMRAIDS)=IEN of file^Free Text of entry^File of SS
 | 
|---|
| 70 |  ;                           ^Date of the SS
 | 
|---|
| 71 |  ; GMRAL(1,"S",1)="32^SEVERE RASH^99ALS^2951211.1120"
 | 
|---|
| 72 |  S GMRAIDS=$P(GMRAND,DL1,2)
 | 
|---|
| 73 |  S GMRAL(GMRAID,"S",GMRAIDS)=$P($P(GMRAND,DL1,3),DL2,4)_U
 | 
|---|
| 74 |  S GMRAL(GMRAID,"S",GMRAIDS)=GMRAL(GMRAID,"S",GMRAIDS)_$P($P(GMRAND,DL1,3),DL2,5)_U
 | 
|---|
| 75 |  S GMRAL(GMRAID,"S",GMRAIDS)=GMRAL(GMRAID,"S",GMRAIDS)_$P($P(GMRAND,DL1,3),DL2,6)_U
 | 
|---|
| 76 |  S %=$P(GMRAND,DL1,4)
 | 
|---|
| 77 |  I %'="" S %=$$HL7TFM^XLFDT($P(GMRAND,DL1,4)),GMRAL(GMRAID,"S",GMRAIDS)=GMRAL(GMRAID,"S",GMRAIDS)_%
 | 
|---|
| 78 |  Q
 | 
|---|
| 79 | NTE ;Comments
 | 
|---|
| 80 |  ;GMRAIDN = Sequence #
 | 
|---|
| 81 |  ;GMRAIDC = the next line of text from the HL7 script
 | 
|---|
| 82 |  ;   NTE Comments section
 | 
|---|
| 83 |  ; GMRAL(GMRAID,"N",GMRAIDN)=Source of comments(Originator always)
 | 
|---|
| 84 |  ; GMRAL(1,"N",1)="n"
 | 
|---|
| 85 |  ; GMRAL(1,"N",1,1)=FREE TEXT
 | 
|---|
| 86 |  S GMRAIDN=1
 | 
|---|
| 87 |  ; old Code S GMRAIDN=$P(GMRAND,DL1,2)
 | 
|---|
| 88 |  S GMRAL(GMRAID,"N",GMRAIDN)="O"
 | 
|---|
| 89 |  ; old code S GMRAL(GMRAID,"N",GMRAIDN,1)=$P(GMRAND,DL1,3)
 | 
|---|
| 90 |  S GMRAL(GMRAID,"N",GMRAIDN,1)=$P(GMRAND,DL1,4)
 | 
|---|
| 91 |  ; old code S GMRAIDC="0" F  S GMRAIDC=$O(MSG(GMRANODE,GMRAIDC)) Q:GMRAIDC<1  Q:$P(MSG(GMRANODE,GMRAIDC),DL1)'="NTE"  D
 | 
|---|
| 92 |  S GMRAIDC="0" F  S GMRAIDC=$O(MSG(GMRANODE,GMRAIDC)) Q:GMRAIDC<1  D
 | 
|---|
| 93 |  .S GMRAL(GMRAID,"N",GMRAIDN,GMRAIDC+1)=MSG(GMRANODE,GMRAIDC)
 | 
|---|
| 94 |  .Q
 | 
|---|
| 95 |  Q
 | 
|---|
| 96 | ERROR ;Error handling
 | 
|---|
| 97 |  Q
 | 
|---|