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