| 1 | RORHLUT1 ;HCIOFO/SG - HL7 UTILITIES (HIGH LEVEL) ; 8/24/05 1:55pm
 | 
|---|
| 2 |  ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  Q
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;***** RETURNS A REASON WHY THE PATIENT HAS BEEN ADDED
 | 
|---|
| 7 |  ;
 | 
|---|
| 8 |  ; RORIENS       IENS of Patient Record in Registry File
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 |  ; CS            HL7 component separator
 | 
|---|
| 11 |  ;
 | 
|---|
| 12 | ADREASON(RORIENS,CS) ;
 | 
|---|
| 13 |  N CODE,ICD9,LAB,NAME,NODE,IEN,RORMSG,TMP
 | 
|---|
| 14 |  S (CODE,ICD9,LAB)=0
 | 
|---|
| 15 |  S NODE=$$ROOT^DILFD(798.01,","_RORIENS,1)
 | 
|---|
| 16 |  Q:NODE="" ""
 | 
|---|
| 17 |  ;--- Check the names of selection rules
 | 
|---|
| 18 |  S IEN=0
 | 
|---|
| 19 |  F  S IEN=$O(@NODE@("B",IEN))  Q:IEN'>0  D
 | 
|---|
| 20 |  . S NAME=$$GET1^DIQ(798.2,IEN_",",.01,,,"RORMSG")
 | 
|---|
| 21 |  . I $G(DIERR)  D  Q
 | 
|---|
| 22 |  . . D DBS^RORERR("RORMSG",-9,,,798.2,IEN_",")
 | 
|---|
| 23 |  . Q:$E(NAME,1,2)'="VA"
 | 
|---|
| 24 |  . I NAME?1.E1" LAB"             S LAB=1   Q
 | 
|---|
| 25 |  . I NAME?1.E1" PROBLEM"         S ICD9=1  Q
 | 
|---|
| 26 |  . I NAME?1.E1" PTF".1" HIST"    S ICD9=1  Q
 | 
|---|
| 27 |  . I NAME?1.E1" VISIT".1" HIST"  S ICD9=1  Q
 | 
|---|
| 28 |  . I NAME?1.E1" VPOV"            S ICD9=1  Q
 | 
|---|
| 29 |  ;--- Check if the patient has been added automatically
 | 
|---|
| 30 |  S NAME="Automatically Added - "
 | 
|---|
| 31 |  I ICD9  S CODE=7,NAME=NAME_"ICD9"
 | 
|---|
| 32 |  I LAB  S CODE=8  D:ICD9  S NAME=NAME_"Lab"
 | 
|---|
| 33 |  . S CODE=9,NAME=NAME_" and "
 | 
|---|
| 34 |  ;---
 | 
|---|
| 35 |  Q $S(CODE:CODE_CS_$$ESCAPE^RORHL7(NAME)_CS_"99VA799_1",1:"")
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 |  ;***** RETURNS THE HL7 VALUE FOR THE DIVISION FIELD
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  ; IEN44         IEN in the HOSPITAL LOCATION file (#44)
 | 
|---|
| 40 |  ;
 | 
|---|
| 41 |  ; [CS]          Component separator ("^", by default))
 | 
|---|
| 42 |  ;
 | 
|---|
| 43 |  ; Return Values:
 | 
|---|
| 44 |  ;       ""  Error
 | 
|---|
| 45 |  ;     '=""  Value of the HL7 field
 | 
|---|
| 46 |  ;
 | 
|---|
| 47 | DIV44(IEN44,CS) ;
 | 
|---|
| 48 |  N DIV,IENS4,NAME,RORBUF,RORMSG,STN,TMP
 | 
|---|
| 49 |  S:$G(CS)="" CS="^"
 | 
|---|
| 50 |  S DIV=$$SITE^RORUTL03(CS)
 | 
|---|
| 51 |  Q:IEN44'>0 DIV
 | 
|---|
| 52 |  ;--- Get the pointer to the INSTITUTION file
 | 
|---|
| 53 |  S IENS4=+$$GET1^DIQ(44,IEN44_",",3,"I",,"RORMSG")_","
 | 
|---|
| 54 |  I $G(DIERR)  D  Q DIV
 | 
|---|
| 55 |  . D DBS^RORERR("RORMSG",-9,,,44,IEN44_",")
 | 
|---|
| 56 |  Q:IENS4'>0 DIV
 | 
|---|
| 57 |  ;--- Load the station name and number
 | 
|---|
| 58 |  D GETS^DIQ(4,IENS4,".01;99",,"RORBUF","RORMSG")
 | 
|---|
| 59 |  I $G(DIERR)  D  Q DIV
 | 
|---|
| 60 |  . D DBS^RORERR("RORMSG",-9,,,4,IENS4)
 | 
|---|
| 61 |  S STN=$E($G(ROROUT(4,IENS4,99)),1,3)
 | 
|---|
| 62 |  Q:STN="" DIV
 | 
|---|
| 63 |  ;--- Construct the HL7 value
 | 
|---|
| 64 |  S NAME=$$ESCAPE^RORHL7($G(RORBUF(4,IENS4,.01)))
 | 
|---|
| 65 |  Q STN_CS_NAME_CS_"99VA4"
 | 
|---|
| 66 |  ;
 | 
|---|
| 67 |  ;***** STORES THE MULTILINE TEXT IN THE OBX SEGMENT
 | 
|---|
| 68 |  ;
 | 
|---|
| 69 |  ; NODE          Closed root of the text
 | 
|---|
| 70 |  ; OBX3          Segment identifier
 | 
|---|
| 71 |  ;
 | 
|---|
| 72 | SETOBXWP(NODE,OBX3) ;
 | 
|---|
| 73 |  N BR,CNT,I,I1,RORSEG,TMP
 | 
|---|
| 74 |  S BR=$E(HLECH,3)_".br"_$E(HLECH,3)
 | 
|---|
| 75 |  Q:$D(@NODE)<10
 | 
|---|
| 76 |  ;--- Initialize the segment
 | 
|---|
| 77 |  S RORSEG(0)="OBX"
 | 
|---|
| 78 |  ;--- OBX-2 - Value Type
 | 
|---|
| 79 |  S RORSEG(2)="FT"
 | 
|---|
| 80 |  ;--- OBX-3 - Observation Identifier
 | 
|---|
| 81 |  S RORSEG(3)=OBX3
 | 
|---|
| 82 |  ;--- OBX-5 - Observation Value
 | 
|---|
| 83 |  S I=$O(@NODE@(0)),CNT=0
 | 
|---|
| 84 |  F  Q:I'>0  S I1=$O(@NODE@(I))  D  S I=I1
 | 
|---|
| 85 |  . S TMP=$$ESCAPE^RORHL7(@NODE@(I))
 | 
|---|
| 86 |  . S CNT=CNT+1,RORSEG(5,CNT)=$S(I1>0:TMP_BR,1:TMP)
 | 
|---|
| 87 |  ;--- OBX-11 - Observation Result Status
 | 
|---|
| 88 |  S RORSEG(11)="F"
 | 
|---|
| 89 |  ;--- Store the segment
 | 
|---|
| 90 |  D:$D(RORSEG(5)) ADDSEG^RORHL7(.RORSEG)
 | 
|---|
| 91 |  Q
 | 
|---|