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

DGROHLU1.m

Go to the documentation of this file.
  1. DGROHLU1 ;DJH/AMA - ROM HL7 BUILD FDA SEGMENT ; 24 Jun 2003 3:53 PM
  1. ;;5.3;Registration;**533,572,1015**;Aug 13, 1993;Build 21
  1. ;
  1. Q
  1. ;
  1. FDA(DGROFDA,DGSEGSTR) ; FDA SEGMENT API
  1. ;Called from BLDORF^DGROHLQ
  1. ;
  1. ; INPUT:
  1. ; DGROFDA - POINTER TO THE GLOBAL DATA ARRAY, ^TMP("DGROFDA",$J)
  1. ;
  1. ; OUTPUT:
  1. ; DGSEGSTR - ARRAY OF SEGMENTS
  1. ;
  1. N DGVAL
  1. ;
  1. Q:'$D(@DGROFDA)
  1. I $$FDAVAL(.DGVAL) D
  1. . D BLDFDA("FDA",.DGVAL,.DGSEGSTR,.DGHL)
  1. Q
  1. ;
  1. FDAVAL(DGVAL) ; FORMAT THE DATA ARRAY FOR THE FDA SEGMENT
  1. ; Input:
  1. ; DGVAL - array of data
  1. ;
  1. N DGRSLT,DGX,DGF,DGIEN,DGFLD,DGEI,DGCHAR
  1. ;
  1. S (DGRSLT,DGX)=0
  1. S DGF=0 F S DGF=$O(@DGROFDA@(DGF)) Q:'DGF D
  1. . S DGIEN="" F S DGIEN=$O(@DGROFDA@(DGF,DGIEN)) Q:DGIEN="" D
  1. . . S DGFLD=0 F S DGFLD=$O(@DGROFDA@(DGF,DGIEN,DGFLD)) Q:'DGFLD D
  1. . . . S DGX=DGX+1
  1. . . . S DGVAL(DGX,1,1)=DGF
  1. . . . S DGVAL(DGX,1,2)=DGIEN
  1. . . . S DGVAL(DGX,1,3)=DGFLD
  1. . . . ;*Get all External values (DG*5.3*572)
  1. . . . S DGVAL(DGX,2,1)=$G(@DGROFDA@(DGF,DGIEN,DGFLD,"E"))
  1. . S DGRSLT=1
  1. ;
  1. Q DGRSLT
  1. ;
  1. BLDFDA(DGTYP,DGVAL,DGSEGSTR,DGHL) ;FDA SEGMENT BUILDER
  1. ;BUILDS THE FDA SEGMENT IN THE FOLLOWING FORMAT:
  1. ; FDA ^ FILE | IEN | FIELD ~ EXTERNAL VALUE
  1. ; ADD ^ FILE | IEN | FIELD ~ EXTERNAL VALUE
  1. ; ADD ^ FILE | IEN | FIELD ~ EXTERNAL VALUE
  1. ; etc., etc.
  1. ;
  1. ; INPUT:
  1. ; DGTYP - SEGMENT TYPE
  1. ; DGVAL - FIELD DATA ARRAY [SUB1:field, SUB2:repetition
  1. ; SUB3:component, SUB4:sub-component]
  1. ; DGSEGSTR - ARRAY OF SEGMENTS, EACH NO GREATER THAN 245 CHARACTERS
  1. ; DGHL - HL7 ENVIRONMENT ARRAY
  1. ;
  1. ; OUTPUT:
  1. ; FUNCTION VALUE - FORMATTED ARRAY OF HL7 SEGMENTS ON SUCCESS, "" ON FAILURE
  1. ;
  1. N DGCNT ;array counter
  1. N DGFS ;field separator
  1. N DGCS ;component separator
  1. N DGRS ;repetition separator
  1. N DGSS ;sub-component separator
  1. N DGFLD ;field subscript
  1. N DGFLDVAL ;field value
  1. N DGSEP ;HL7 separator
  1. N DGREP ;repetition subscript
  1. N DGREPVAL ;repetition value
  1. N DGCMP ;component subscript
  1. N DGCMPVAL ;component value
  1. N DGSUB ;sub-component subscript
  1. N DGSUBVAL ;sub-component value
  1. ;
  1. Q:($G(DGTYP)']"")
  1. ;
  1. S DGCNT=1
  1. S DGSEGSTR(DGCNT)=DGTYP
  1. S DGFS=DGHL("FS")
  1. S DGCS=$E(DGHL("ECH"))
  1. S DGRS=$E(DGHL("ECH"),2)
  1. S DGSS=$E(DGHL("ECH"),4)
  1. ;
  1. F DGFLD=1:1:$O(DGVAL(""),-1) D
  1. . I DGTYP="ADD" S DGCNT=DGCNT+1,DGSEGSTR(DGCNT)=DGTYP
  1. . S DGFLDVAL=$G(DGVAL(DGFLD)),DGSEP=DGFS
  1. . D ADD(DGFLDVAL,DGSEP,.DGSEGSTR,.DGCNT)
  1. . F DGREP=1:1:$O(DGVAL(DGFLD,""),-1) D
  1. . . S DGREPVAL=$G(DGVAL(DGFLD,DGREP))
  1. . . S DGSEP=$S(DGREP=1:"",1:DGRS)
  1. . . D ADD(DGREPVAL,DGSEP,.DGSEGSTR,.DGCNT)
  1. . . F DGCMP=1:1:$O(DGVAL(DGFLD,DGREP,""),-1) D
  1. . . . S DGCMPVAL=$G(DGVAL(DGFLD,DGREP,DGCMP))
  1. . . . S DGSEP=$S(DGCMP=1:"",1:DGCS)
  1. . . . D ADD(DGCMPVAL,DGSEP,.DGSEGSTR,.DGCNT)
  1. . . . F DGSUB=1:1:$O(DGVAL(DGFLD,DGREP,DGCMP,""),-1) D
  1. . . . . S DGSUBVAL=$G(DGVAL(DGFLD,DGREP,DGCMP,DGSUB))
  1. . . . . S DGSEP=$S(DGSUB=1:"",1:DGSS)
  1. . . . . D ADD(DGSUBVAL,DGSEP,.DGSEGSTR,.DGCNT)
  1. . S DGTYP="ADD"
  1. Q
  1. ;
  1. ADD(DGVAL,DGSEP,DGSEGSTR,DGCNT) ;append a value onto segment
  1. ;
  1. ; Input:
  1. ; DGVAL - value to append
  1. ; DGSEP - HL7 separator
  1. ;
  1. ; Output:
  1. ; DGSEGSTR(DGCNT) - segment passed by reference
  1. ;
  1. S DGSEP=$G(DGSEP)
  1. S DGVAL=$G(DGVAL)
  1. S DGSEGSTR(DGCNT)=DGSEGSTR(DGCNT)_DGSEP_DGVAL
  1. Q