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

INHMGD4.m

Go to the documentation of this file.
  1. INHMGD4 ;CAR; 17 Sep 97 11:45;HL7 MESSAGING - MAIN DATA PRINTING ROUTINE
  1. ;;3.01;BHL IHS Interfaces with GIS;;JUL 01, 2001
  1. ;COPYRIGHT 1991-2000 SAIC
  1. ;
  1. ; MODULE NAME:
  1. ; HL7 Messaging - Main Data Printing Module (INHMGD4).
  1. ;
  1. ; PURPOSE:
  1. ; Collect previously stored data and display on chosen medium.
  1. ;
  1. PRINT(INDL,INP) ;Print Routine
  1. ; Inputs:
  1. ; INDL = Data Loacation in the form "field#:file# (field name)"
  1. ; INP = Flag and Description Array for MS Access output.
  1. ;
  1. N INS1,INS3,INW1,INW3,INJ,INK,INEED,INAVL
  1. N INSV,INFN,INFLD,INFIL,INAME,INTXT,INDSC
  1. ;
  1. ;determine column starting positions based of width of page (IOM)
  1. S INS1=$S(INDENT:25,1:23)+ING ;start of column1
  1. ; INS2 is defined in INHMGD1
  1. S INW1=INS2-INS1+1-3 ;width of column1
  1. S INS3=INS2+$S(IOM<96:12,1:16) ;start of column3
  1. S INW3=IOM-INS3+1-4 ;width of column3
  1. ;
  1. ;BEGIN creating DATA line for output by WRITE^INHMGD1
  1. ;add segment ID#
  1. S INSV=$E(INSVAR,4,7),INSV=$P(INSV,".",2) S:$L(INSV) INSV="."_INSV
  1. S DATA="$J(INFD(""SQ""),3)_INSV" ;sequence# and segment ID#
  1. ;
  1. S DATA=DATA_",?ING+6,$J(INFD(""LEN""),3)" ;Field Length
  1. S DATA=DATA_",?ING+11,INFD(""DT"")" ;Data Type abbreviation
  1. S DATA=DATA_",?ING+15,INREQ,?ING+17,INREP,?ING+19,INUFL,?ING+21,XFM" ;required, repeating...
  1. ;
  1. ;add the HL7 field name to DATA
  1. S DATA=DATA_",?INS1"
  1. D WRAPS^INHMGD11(INFD("FN"),.INFN,INW1)
  1. S DATA=DATA_",INFN(1)"
  1. ;
  1. ;check for results from DICOMP lookup, INFIL is File, INFLD is Field
  1. S (INFLD,INFIL,INAME)=""
  1. ;for @ & "", stick contents in INAME so it will appear in 3rd CHCS col.
  1. I $E(INDL)=""""!($E(INDL)="@") S INAME=INDL,INDL=""
  1. ;line looks like "4:44.8 (FIELD NAME)", so double $P for INFIL
  1. I $L(INDL) S INFLD=$P(INDL,":"),INFIL=$P($P(INDL," "),":",2)
  1. ;$L(INDL) means we have field#[:file#], need to split out field name
  1. I $L(INDL),'$L(INAME) S INAME=$S(INDL["(":"("_$P(INDL,"(",2,9),1:"")
  1. ;
  1. ;no need to wrap the HL7 field name if there is no Fileman Field#
  1. I 'INFLD,INFN>1 S DATA=DATA_",INFN(2)",INFN=1
  1. ;
  1. ;add field# to DATA, add ":", add file#
  1. I $L(INFLD) S DATA=DATA_",?INS2,$J(INFLD,5)"
  1. I +INFIL S INFIL=INFIL_" ",DATA=DATA_","":"",?(INS2+6),INFIL"
  1. ;
  1. ;add field name to DATA
  1. S INAME=$G(INAME)
  1. D WRAPS^INHMGD11(INAME,.INTXT,INW3)
  1. S DATA=DATA_",?INS3,INTXT(1)"
  1. Q:INEXIT
  1. ;
  1. ;before we write out the data line, see if it all will fit on the
  1. ;existing page, or if we need a new page.
  1. S INJ=INFN S:INTXT>INJ INJ=INTXT S INEED=1+(INJ-1) ;1 line+wraps
  1. S INAVL=IOSL-$Y-2
  1. I INEED>INAVL D HEADER^INHMGD1
  1. ;WRITE the DATA line
  1. D WRITE^INHMGD1
  1. ;
  1. ;write out the wrapped HL7 Field Name and wrapped Fileman Field Name
  1. S:'INFLD INFN(2)=""
  1. I INJ>1 F INK=2:1:INJ D
  1. .S DATA="?INS1,$G(INFN(INK)),?INS3,$G(INTXT(INK))"
  1. .D WRITE^INHMGD1
  1. ;
  1. ;process data for output file
  1. I INP,'INDENT D ;'INDENT because RQMTS doesn't want sub fields
  1. .;add field length & Data Type
  1. .S INP=INP_TAB_INFD("LEN") ; $P10 Field Length
  1. .S INP=INP_TAB_INFD("DT") ; $P11 Field Data Type
  1. .S INP=INP_TAB_$S(INREQ["Y":"Y",1:"") ;$P12 Field Required?
  1. .S INP=INP_TAB_$S(INREP["Y":"Y",1:"") ;$P13 Field Repeatable?
  1. .S INP=INP_TAB_INFD("FN") ; $P14 HL7 Field Name
  1. .S INP=INP_TAB_INFLD ; $P15 Fileman Field#
  1. .S INP=INP_TAB_INFIL ; $P16 Fileman File#
  1. .S INP=INP_TAB_INAME ; $P17 Fileman Field Name
  1. .;add an incrementing line # to front of DATA line
  1. .S X=+INP,INP=$E(INP,$L(X)+1,254)
  1. .S DATA="X+.1_TAB_INP" ;Line type: (data=.1, description=>.2)
  1. .D WRITE^INHMGD1
  1. .;restore the numbering to the front of INP
  1. .S INP=X+1_INP
  1. Q
  1. ;
  1. MAPXFRM(INFLDC) ;
  1. ;Print out any Map functions or Xfrms
  1. N DATA,INDATA,INTXT,J
  1. I $L($G(INFLDC(4))) D S INFLDC(4)=""
  1. .D WRAPS^INHMGD11(INFLDC(4),.INTXT,IOM-29)
  1. .S DATA="?10,""Incoming Xform: """,J=0
  1. .F S J=$O(INTXT(J)) Q:'J D
  1. ..S DATA=DATA_",INTXT(J)" D WRITE^INHMGD1 S DATA="?26"
  1. ;
  1. I $L($G(INFLDC(5))) D S INFLDC(5)=""
  1. .D WRAPS^INHMGD11(INFLDC(5),.INTXT,IOM-29)
  1. .S DATA="?10,""Outgoing Xform: """,J=0
  1. .F S J=$O(INTXT(J)) Q:'J D
  1. ..S DATA=DATA_",INTXT(J)" D WRITE^INHMGD1 S DATA="?26"
  1. ;
  1. I $G(INFLDC(50)) D S INFLDC(50)=""
  1. .S INDATA=$P($G(^INVD(4090.2,+INFLDC(50),0)),U)
  1. .I $L(INDATA) S DATA="?10,""Map Function: "",INDATA" D WRITE^INHMGD1
  1. S DATA="$C(32)"
  1. Q
  1. ;