Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: RORHL01

RORHL01.m

Go to the documentation of this file.
RORHL01 ;HOIFO/CRT - HL7 PATIENT DATA: PID,ZSP,ZRD ; 6/19/06 2:08pm
 ;;1.5;CLINICAL CASE REGISTRIES;**1**;Feb 17, 2006;Build 24
 ;
 ; This routine uses the following IAs:
 ;
 ; #263          $$EN^VAFHLPID (controlled)
 ; #3630         BLDPID^VAFCQRY (controlled)
 ; #4535         EN^VAFHLZRD (private)
 ; #4536         $$EN^VAFHLZSP (private)
 ; #10035        Read access to the PATIENT file (supported)
 ;
 Q
 ;
 ;***** PID SEGMENT BUILDER
 ;
 ; RORDFN        DFN of Patient Record in File #2
 ;
 ; Return Values:
 ;       <0  Error Code
 ;        0  Ok
 ;       >0  Non-fatal error(s)
 ;
PID(RORDFN) ;
 N CS,ERRCNT,I,PTID,RC,RORBUF,RORMSG,RPS,SCS,SEG,TMP
 S (ERRCNT,RC)=0
 D ECH^RORHL7(.CS,.SCS,.RPS)
 ;
 ;--- Check if the patient exists
 S RORDFN=+$G(RORDFN)
 I '$D(^DPT(RORDFN,0))  D  Q RC
 . S RC=$$ERROR^RORERR(-36,,,RORDFN,2)
 ;
 ;--- Call Standard PID Segment builder
 S TMP="3,5,7,8,10,11,19,22,29"
 D BLDPID^VAFCQRY(RORDFN,"",TMP,.RORBUF,.RORHL,.RORMSG)
 ;---
 D LOADSEG^RORHL7A(.SEG,"RORBUF")
 ;
 ;--- PID-3 Patient Identifiers
 S PTID=""
 F I=1:1  S TMP=$P(SEG(3),RPS,I)  Q:TMP=""  D
 . S:"NI,PI"[$P(TMP,CS,5) PTID=PTID_RPS_TMP
 S SEG(3)=$P(PTID,RPS,2,99)
 ;
 ;--- PID-5 Remove the Patient Name
 S SEG(5)=""
 ;
 ;--- PID-10 Send the old race if the new format is not available
 I $G(SEG(10))?.""""  D
 . N VAFPID
 . S TMP=$$EN^VAFHLPID(RORDFN,"10")
 . S:$G(VAFPID(1))'="" RORSEG=RORSEG_VAFPID(1)
 . S SEG(10)=$P(TMP,HLFS,11)
 ;
 ;--- PID-11 Remove Address (leave ZIP only)
 S SEG(11)=CS_CS_CS_CS_$P($G(SEG(11)),CS,5)
 ;
 ;--- PID-19 Encrypt SSN
 S SEG(19)=$$XOR^RORUTL03($G(SEG(19)))
 ;
 ;--- Store the segment
 D ADDSEG^RORHL7(.SEG)
 Q ERRCNT
 ;
 ;***** ZSP SEGMENT BUILDER
 ;
 ; RORDFN        DFN of Patient Record in File #2
 ;
 ; Return Values:
 ;       <0  Error Code
 ;        0  Ok
 ;       >0  Non-fatal error(s)
 ;
ZSP(RORDFN) ;
 N RC,RORFLDS,RORSEG
 S RC=0
 ;
 ;--- Check if the patient exists
 S RORDFN=+$G(RORDFN)
 I '$D(^DPT(RORDFN,0))  D  Q RC
 . S RC=$$ERROR^RORERR(-36,,,RORDFN,2)
 ;
 S RORFLDS="1,2,3,4" ; Default HL7 fields
 ;
 ;--- Call Standard ZSP Segment Builder
 S RORSEG=$$EN^VAFHLZSP(RORDFN)
 ;
 ;--- Store the segment
 D ADDSEG^RORHL7(.RORSEG,"C")
 Q $S(RC<0:RC,1:0)
 ;
 ;***** ZRD SEGMENT BUILDER
 ;
 ; RORDFN        DFN of Patient Record in File #2
 ;
 ; Return Values:
 ;       <0  Error Code
 ;        0  Ok
 ;       >0  Non-fatal error(s)
 ;
ZRD(RORDFN) ;
 N I,RC,RORFLDS,RORSEG
 S RC=0
 ;
 ;--- Check if the patient exists
 S RORDFN=+$G(RORDFN)
 I '$D(^DPT(RORDFN,0))  D  Q RC
 . S RC=$$ERROR^RORERR(-36,,,RORDFN,2)
 ;
 S RORFLDS="1,2,3,4" ; Default HL7 fields
 ;
 ;--- Call Standard ZRD Segment Builder
 D EN^VAFHLZRD(RORDFN,RORFLDS,,HLFS,"RORSEG")
 ;
 ;--- Store the segment(s)
 S I=""
 F  S I=$O(RORSEG(I))  Q:I=""  Q:$P($G(RORSEG(I,0)),HLFS,3)=""  D
 . D ADDSEG^RORHL7(RORSEG(I,0),"C")
 Q $S(RC<0:RC,1:0)