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