| 1 | GMRAOR3 ;HIRMFO/RM,WAA-ORDERABLE LIST UTILITIES ; 2/2/95
 | 
|---|
| 2 |  ;;4.0;Adverse Reaction Tracking;**13**;Mar 29, 1996
 | 
|---|
| 3 | EN1(START,NUM,ARRAY) ; ENTRY POINT WHERE ALL VARIABLES ARE OPTIONAL.
 | 
|---|
| 4 |  ;  START IS THE STARTING POINT OF LIST TO BE RETURNED, NUM IS
 | 
|---|
| 5 |  ;  THE NUMBER OF ENTRIES FROM STARTING POINT TO INCLUDE IN LIST,
 | 
|---|
| 6 |  ;  AND ARRAY IS THE ADDRESS OF THE ARRAY LIST IS TO BE RETURNED.
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  K:$G(START)="" START ; Force list to start at "A" and skip num./punc.
 | 
|---|
| 9 |  S START=$G(START,"A"),NUM=$G(NUM),ARRAY=$G(ARRAY,"GMRALST")
 | 
|---|
| 10 |  K ^TMP($J,"GMRALST")
 | 
|---|
| 11 | NODE ;Loop through each file in order of X-ref.
 | 
|---|
| 12 |  ;
 | 
|---|
| 13 |  ; Loop through GMR Allergies file.
 | 
|---|
| 14 |  S GMRAST=START
 | 
|---|
| 15 |  F GMRACNT=1:1 Q:NUM&(GMRACNT>NUM)  S GMRAST=$O(^GMRD(120.82,"B",GMRAST)) Q:GMRAST=""  S GMRAIEN=$O(^(GMRAST,"")) I GMRAIEN>0 D FILE("ALL",0)
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 |  ; Loop through VA Drug Class file.
 | 
|---|
| 18 |  S GMRAST=START
 | 
|---|
| 19 |  F GMRACNT=1:1 Q:NUM&(GMRACNT>NUM)  S GMRAST=$O(^PS(50.605,"C",GMRAST)) Q:GMRAST=""  S GMRAIEN=$O(^(GMRAST,"")) I GMRAIEN>0 D FILE("PSC",0)
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  ; Loop through NDF File (B X-ref)
 | 
|---|
| 22 |  ; $$B^PSNAPIS returns NDF version dependent root of "B" x-ref
 | 
|---|
| 23 |  S GMRAST=START
 | 
|---|
| 24 |  F GMRACNT=1:1 Q:NUM&(GMRACNT>NUM)  S GMRAST=$O(@($$B^PSNAPIS)@(GMRAST)) Q:GMRAST=""  S GMRAIEN=$O(^(GMRAST,"")) I GMRAIEN>0 D FILE("NDF",0)
 | 
|---|
| 25 |  ;
 | 
|---|
| 26 |  ; Loop through NDF file (T X-ref)
 | 
|---|
| 27 |  ; $$T^PSNAPIS returns NDF version dependent root of "T" x-ref
 | 
|---|
| 28 |  S GMRAST=START K ^TMP($J,"GMRAT")
 | 
|---|
| 29 |  F GMRACNT=1:1 Q:NUM&(GMRACNT>NUM)  S GMRAST=$O(@($$T^PSNAPIS)@(GMRAST))  Q:GMRAST=""  S GMRAIEN=$$TGTOG^PSNAPIS(GMRAST) I GMRAIEN>0 D FILE("NDF",1)
 | 
|---|
| 30 |  ; Set the return array.
 | 
|---|
| 31 |  S GMRACNT=1,GMRAST="" F  S GMRAST=$O(^TMP($J,"GMRALST",GMRAST)) Q:GMRAST=""  D  I NUM'="" Q:GMRACNT>NUM
 | 
|---|
| 32 |  .S @ARRAY@(GMRACNT)=^TMP($J,"GMRALST",GMRAST),GMRACNT=GMRACNT+1
 | 
|---|
| 33 |  .Q
 | 
|---|
| 34 |  K ^TMP($J,"GMRALST"),^TMP($J,"GMRAT"),GMRACNT,GMRAIEN,GMRAST
 | 
|---|
| 35 |  Q
 | 
|---|
| 36 | FILE(GMRATAB,GMRAT) ;File away a found entry
 | 
|---|
| 37 |  ;    GMRATAB is the table entry in from OE3 HL7 spec.
 | 
|---|
| 38 |  ;    GMRAT is (0/1) indicating whether to check for dups of same entry.
 | 
|---|
| 39 |  ;
 | 
|---|
| 40 |  I GMRAT Q:$D(^TMP($J,"GMRAT",GMRAIEN))  S ^(GMRAIEN)=""
 | 
|---|
| 41 |  I '$D(^TMP($J,"GMRALST",GMRAST)) S ^(GMRAST)=GMRAIEN_U_GMRAST_U_"99"_GMRATAB
 | 
|---|
| 42 |  K GMRAT,GMRATAB
 | 
|---|
| 43 |  Q
 | 
|---|