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

RORHL18.m

Go to the documentation of this file.
  1. RORHL18 ;BPOIFO/ACS - HL7 IMMUNIZATION DATA: OBR,OBX ;11/1/09
  1. ;;1.5;CLINICAL CASE REGISTRIES;**10**;Feb 17, 2006;Build 32
  1. ;
  1. ; DBIA #5521 : ^AUPNVIMM (private)
  1. ; DBIA #2028 : ^AUPNVSIT (controlled)
  1. ; DBIA #10060: Read access to file #200 (supported)
  1. ; DBIA #2056 : $$GET1^DIQ,GETS^DIQ (supported)
  1. Q
  1. ;
  1. ;***** SEARCH FOR IMMUNIZATION DATA
  1. ;
  1. ; RORDFN IEN of the patient in the PATIENT file (#2)
  1. ;
  1. ; .DXDTS Reference to a local variable where the
  1. ; data extraction time frames are stored.
  1. ;
  1. ; Return Values:
  1. ; 0 Ok
  1. ;
  1. EN1(RORDFN,DXDTS) ;
  1. N DFN,IDX,RORENDT,RORSTDT,ROR1,ROREVDT,RORSKIP
  1. ;
  1. S DFN=RORDFN
  1. S IDX=0
  1. F S ROR1=0 S IDX=$O(DXDTS(17,IDX)) Q:IDX'>0 D
  1. . S RORSTDT=$P(DXDTS(17,IDX),U),RORENDT=$P(DXDTS(17,IDX),U,2)
  1. . ;--- Look for Immunization data
  1. . S RORSKIP=0 F S ROR1=$O(^AUPNVIMM("C",DFN,ROR1)) Q:'ROR1 D
  1. .. N RORIDATA,RORIERR,ROREVDT
  1. .. ;get immunization data for the HL7 message
  1. .. K RORIDATA,RORIERR D GETS^DIQ(9000010.11,ROR1_",",".01;.03;.06;.07;1201;1202;81101","IE","RORIDATA","RORIERR")
  1. .. Q:$D(RORIERR("DIERR"))
  1. .. S ROREVDT=$G(RORIDATA(9000010.11,ROR1_",",1201,"I")) ;get event date/time
  1. .. Q:$G(ROREVDT)>(RORENDT_.999999) ;event date/time can't be in the future
  1. .. N RORVSIT ;get VISIT IEN from immunization file
  1. .. S RORVSIT=$G(RORIDATA(9000010.11,ROR1_",",".03","I")) ;visit IEN
  1. .. ;get FM internal DATE LAST MODIFIED from visit file
  1. .. N RORIDLM,RORIERR,RORDLM
  1. .. K RORIDLM,RORIERR D GETS^DIQ(9000010,RORVSIT_",",".13","I","RORIDLM","RORIERR")
  1. .. S RORDLM=$G(RORIDLM(9000010,RORVSIT_",",".13","I")) ;date last modified
  1. .. S RORDLM=RORDLM\1 ;exclude 'time'
  1. .. Q:RORDLM<RORSTDT ;quit if date last modified is before extraction start date
  1. .. Q:RORDLM>RORENDT ;quit if date last modified is after extraction end date
  1. .. S RORVSIT=+$G(^AUPNVSIT(RORVSIT,0)) ;get visit date/time in FM format
  1. .. ;--- Process the data
  1. .. D OBR(.RORIDATA,DFN,RORVSIT,ROR1)
  1. .. D OBX(.RORIDATA,DFN,RORVSIT,ROR1)
  1. ;
  1. Q 0
  1. ;
  1. ;***** IMMUNIZATION OBR SEGMENT BUILDER
  1. ;
  1. ; Return Values:
  1. ; <0 Error code
  1. ; 0 Ok
  1. ; >0 Non-fatal error(s)
  1. ;
  1. OBR(RORIDATA,DFN,RORVSIT,ROR1) ;
  1. N CS,RORSEG
  1. D ECH^RORHL7(.CS) ;component separator = ^
  1. ;
  1. ;--- Initialize the segment
  1. S RORSEG(0)="OBR"
  1. ;
  1. ;--- OBR-3 - Immunization IEN in V IMMUNIZATION file
  1. ;S RORSEG(3)=$G(RORIDATA(9000010.11,ROR1_",",.01,"I"))
  1. S RORSEG(3)=$G(ROR1)
  1. ;
  1. ;--- OBR-4 - Universal Service ID
  1. S RORSEG(4)="90749"_CS_"IMMUNIZATION"_CS_"C4"
  1. ;
  1. ;--- OBR-13 - 'COMMENTS'
  1. S RORSEG(13)=$G(RORIDATA(9000010.11,ROR1_",",81101,"E"))
  1. ;
  1. ;--- OBR-16 - 'ORDERING PROVIDER': IEN and PROVIDER CLASS
  1. N ROROPIEN,RORDATA,RORMSG
  1. S ROROPIEN=$G(RORIDATA(9000010.11,ROR1_",",1202,"I"))
  1. I ROROPIEN>0 D
  1. . ;get provider class
  1. . N DIERR S $P(RORDATA,CS,13)=$$GET1^DIQ(200,+ROROPIEN_",",53.5,"E",,"RORMSG")
  1. . Q:$G(RORMSG(("DIERR")))
  1. . S $P(RORDATA,CS,1)=ROROPIEN ;provider IEN
  1. . S RORSEG(16)=$G(RORDATA)
  1. ;
  1. ;--- OBR-24 - Diagnostic Service ID
  1. S RORSEG(24)="OTH"
  1. ;
  1. ;--- Store the segment
  1. D ADDSEG^RORHL7(.RORSEG)
  1. Q
  1. ;
  1. ;***** IMMUNIZATION OBX SEGMENT BUILDER
  1. ;
  1. ;
  1. OBX(RORIDATA,DFN,RORVSIT,ROR1) ;
  1. N CS,RORSEG
  1. D ECH^RORHL7(.CS)
  1. ;
  1. ;--- Initialize the segment
  1. S RORSEG(0)="OBX"
  1. ;
  1. ;--- OBX-2 - Value Type of OBX-5
  1. S RORSEG(2)="FT"
  1. ;
  1. ;--- OBX-3 - Immunization 'NAME' from IMMUNIZATION file #9999999.14
  1. S RORSEG(3)=CS_$G(RORIDATA(9000010.11,ROR1_",",.01,"E"))
  1. ;
  1. ;--- OBX-5 - 'REACTION'_CS_'CONTRAINDICATED'
  1. N TMP1,TMP2
  1. S TMP1=$G(RORIDATA(9000010.11,ROR1_",",.06,"I"))
  1. S TMP2=$G(RORIDATA(9000010.11,ROR1_",",.07,"I"))
  1. S RORSEG(5)=$G(TMP1)_CS_$G(TMP2)
  1. ;
  1. ;--- OBX-14 - 'EVENT DATE AND TIME'
  1. N TMP1 S TMP1=$G(RORIDATA(9000010.11,ROR1_",",1201,"I"))
  1. I $G(TMP1)>0 S RORSEG(14)=$$FM2HL^RORHL7(TMP1)
  1. ;
  1. ;--- OBX-19 - 'VISIT'
  1. I $G(RORVSIT)>0 S RORSEG(19)=$$FM2HL^RORHL7(RORVSIT) ;convert to HL7 format
  1. ;
  1. D ADDSEG^RORHL7(.RORSEG)
  1. Q