| [613] | 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
 | 
|---|