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

VAFHLRO2.m

Go to the documentation of this file.
  1. VAFHLRO2 ;BP/JRP - BUILD OUTPATIENT HL7 ROLE SEGMENT;11/18/1997 ; 7/3/01 4:09pm
  1. ;;5.3;Registration;**160,215,389**;Aug 13, 1993
  1. ;
  1. ; ** Do not call this routine directly **
  1. ; ** Use supported call OUTPAT^VAFHLROL **
  1. ;
  1. OUTPAT ;Build role segment for transmission of outpatient data
  1. ;
  1. ;Input : As defined in OUTPAT^VAFHLROL
  1. ;Output : As defined in OUTPAT^VAFHLROL
  1. ;Notes : Existance & validity of input assumed
  1. ; : Refer to OUTPAT^VAFHLROL for details
  1. ;
  1. ;Declare variables
  1. N PTR200,CODEONLY,INSTID,ACTION,ROLE,ALTROLE,PERSON,TMP,RDATE
  1. N VAFHLROL,CMPSEP,REPSEP,ESCSEP,SUBSEP
  1. ;Break out individual seperators from encoding characters
  1. S CMPSEP=$E(ENCODE,1)
  1. S REPSEP=$E(ENCODE,2)
  1. S ESCSEP=$E(ENCODE,3)
  1. S SUBSEP=$E(ENCODE,4)
  1. ;Initialize output array
  1. K @OUTARR S @OUTARR@(0)=""
  1. ;Get pointer to provider out of parameter array
  1. S PTR200=+$G(@PARAM@("PTR200"))
  1. S:('$D(^VA(200,PTR200,0))) PTR200=0
  1. ;Get internal/external flag
  1. S CODEONLY=+$G(@PARAM@("CODEONLY"))
  1. ;Build segment into temporary location
  1. S VAFHLROL(0)="ROL"
  1. S1 ;Role Instance ID (seq #1)
  1. S INSTID=$G(@PARAM@("INSTID"),NULL)
  1. S TMP=$P(INSTID,CMPSEP,1)
  1. D:((TMP=NULL)!(TMP="")) ERROR^VAFHLRO1(1,OUTARR,"could not be determined")
  1. S VAFHLROL(1)=FLDSEP_INSTID
  1. S2 ;Action Code (seq #2)
  1. S ACTION=$G(@PARAM@("ACTION"),NULL)
  1. S TMP=",AD,UP,DE,CO,LI,UN,UC,"
  1. I (TMP'[(","_ACTION_",")) D
  1. .I ((ACTION=NULL)!(ACTION="")) D ERROR^VAFHLRO1(2,OUTARR,"could not be determined") Q
  1. .D ERROR^VAFHLRO1(2,OUTARR,"was not valid")
  1. S VAFHLROL(2)=FLDSEP_ACTION
  1. S3 ;Role (seq #3, comp #1 - 3)
  1. I ($D(@PARAM@("ROLE"))) D G S3C4
  1. .;Use input value
  1. .S ROLE=$G(@PARAM@("ROLE"),NULL)
  1. .I ((ROLE="")!(ROLE=NULL)) D ERROR^VAFHLRO1(3,OUTARR,"could not be determined")
  1. .S TMP=$P(ROLE,CMPSEP,1)
  1. .S:(TMP="") TMP=NULL
  1. .S VAFHLROL(3,1)=FLDSEP_TMP
  1. .S TMP=$P(ROLE,CMPSEP,2)
  1. .S:(TMP="") TMP=NULL
  1. .S VAFHLROL(3,2)=CMPSEP_TMP
  1. .S TMP=$P(ROLE,CMPSEP,3)
  1. .S:(TMP="") TMP=NULL
  1. .S VAFHLROL(3,3)=CMPSEP_TMP
  1. ;Calculate value
  1. I ('PTR200) D G S3C4
  1. .D ERROR^VAFHLRO1(3,OUTARR,"could not be determined")
  1. .S VAFHLROL(3)=FLDSEP_NULL_CMPSEP_NULL_CMPSEP_NULL
  1. K ROLE S RDATE=$G(@PARAM@("RDATE"))
  1. D ROLE^VAFHLRO3(PTR200,"ROLE",NULL,RDATE)
  1. I ('$D(ROLE)) D G S3C4
  1. .D ERROR^VAFHLRO1(3,OUTARR,"could not be determined")
  1. .S VAFHLROL(3)=FLDSEP_NULL_CMPSEP_NULL_CMPSEP_NULL
  1. ;Strip out external values
  1. I (CODEONLY) F TMP=1:1:3 S ROLE(2,TMP)=NULL
  1. ;Copy and add appropriate seperators
  1. ; (Convert any HL7 characters into spaces)
  1. S TMP=FLDSEP_ENCODE
  1. S VAFHLROL(3,1)=FLDSEP_$TR(ROLE(1),TMP," ")
  1. S VAFHLROL(3,2,1)=CMPSEP_$TR(ROLE(2,1),TMP," ")
  1. S VAFHLROL(3,2,2)=SUBSEP_$TR(ROLE(2,2),TMP," ")
  1. S VAFHLROL(3,2,3)=SUBSEP_$TR(ROLE(2,3),TMP," ")
  1. S VAFHLROL(3,3)=CMPSEP_$TR(ROLE(3),TMP," ")
  1. S3C4 ;Alternate Role (seq #3, comp #4 - 6)
  1. I ('$D(@PARAM@("ALTROLE"))) D G S4
  1. .S VAFHLROL(3,4)=CMPSEP_NULL_CMPSEP_NULL_CMPSEP_NULL
  1. ;Use input value
  1. S TMP=NULL_CMPSEP_NULL_CMPSEP_NULL
  1. S ALTROLE=$G(@PARAM@("ALTROLE"),TMP)
  1. S:(ALTROLE="") ALTROLE=TMP
  1. S TMP=$P(ALTROLE,CMPSEP,1)
  1. S:(TMP="") TMP=NULL
  1. S VAFHLROL(3,4)=CMPSEP_TMP
  1. S TMP=$P(ALTROLE,CMPSEP,2)
  1. S:(TMP="") TMP=NULL
  1. S VAFHLROL(3,5)=CMPSEP_TMP
  1. S TMP=$P(ALTROLE,CMPSEP,3)
  1. S:(TMP="") TMP=NULL
  1. S VAFHLROL(3,6)=CMPSEP_TMP
  1. S4 ;Role Person (seq #4)
  1. I ($D(@PARAM@("PERSON"))) D G DONE
  1. .;Use input value
  1. .S PERSON=$G(@PARAM@("PERSON"),NULL)
  1. .I ((PERSON="")!(PERSON=NULL)) D ERROR^VAFHLRO1(4,OUTARR,"could not be determined")
  1. .S TMP=$P(PERSON,CMPSEP,1)
  1. .S:(TMP="") TMP=NULL
  1. .S VAFHLROL(4,1)=FLDSEP_TMP
  1. .S TMP=$P(PERSON,CMPSEP,2)
  1. .S:(TMP="") TMP=NULL
  1. .S VAFHLROL(4,2)=CMPSEP_TMP
  1. .S TMP=$P(PERSON,CMPSEP,3)
  1. .S:(TMP="") TMP=NULL
  1. .S VAFHLROL(4,3)=CMPSEP_TMP
  1. .S TMP=$P(PERSON,CMPSEP,4)
  1. .S:(TMP="") TMP=NULL
  1. .S VAFHLROL(4,4)=CMPSEP_TMP
  1. .S TMP=$P(PERSON,CMPSEP,5)
  1. .S:(TMP="") TMP=NULL
  1. .S VAFHLROL(4,5)=CMPSEP_TMP
  1. .S TMP=$P(PERSON,CMPSEP,6)
  1. .S:(TMP="") TMP=NULL
  1. .S VAFHLROL(4,6)=CMPSEP_TMP
  1. .S TMP=$P(PERSON,CMPSEP,7)
  1. .S:(TMP="") TMP=NULL
  1. .S VAFHLROL(4,7)=CMPSEP_TMP
  1. .S TMP=$P(PERSON,CMPSEP,8)
  1. .S:(TMP="") TMP=NULL
  1. .S VAFHLROL(4,8)=CMPSEP_TMP
  1. ;Calculate value
  1. I ('PTR200) D G DONE
  1. .D ERROR^VAFHLRO1(4,OUTARR,"could not be determined")
  1. .S VAFHLROL(4)=FLDSEP_NULL_CMPSEP_NULL_CMPSEP_NULL_CMPSEP_NULL_CMPSEP_NULL_CMPSEP_NULL_CMPSEP_NULL_CMPSEP_NULL
  1. K PERSON D PERSON^VAFHLRO3(PTR200,"PERSON",NULL)
  1. I ('$D(PERSON)) D G DONE
  1. .D ERROR^VAFHLRO1(4,OUTARR,"could not be determined")
  1. .S VAFHLROL(4)=FLDSEP_NULL_CMPSEP_NULL_CMPSEP_NULL_CMPSEP_NULL_CMPSEP_NULL_CMPSEP_NULL_CMPSEP_NULL_CMPSEP_NULL
  1. ;Strip out external values
  1. I (CODEONLY) F TMP=2:1:7 S PERSON(1,TMP)=NULL
  1. ;Copy and add appropriate seperators
  1. ; (Convert any HL7 characters into spaces)
  1. S TMP=FLDSEP_ENCODE
  1. S VAFHLROL(4,1,1,1)=FLDSEP_$TR(PERSON(1,1,1),TMP," ")
  1. S VAFHLROL(4,1,1,2)=SUBSEP_$TR(PERSON(1,1,2),TMP," ")
  1. S VAFHLROL(4,1,2)=CMPSEP_$TR(PERSON(1,2),TMP," ")
  1. S VAFHLROL(4,1,3)=CMPSEP_$TR(PERSON(1,3),TMP," ")
  1. S VAFHLROL(4,1,4)=CMPSEP_$TR(PERSON(1,4),TMP," ")
  1. S VAFHLROL(4,1,5)=CMPSEP_$TR(PERSON(1,5),TMP," ")
  1. S VAFHLROL(4,1,6)=CMPSEP_$TR(PERSON(1,6),TMP," ")
  1. S VAFHLROL(4,1,7)=CMPSEP_$TR(PERSON(1,7),TMP," ")
  1. S VAFHLROL(4,1,8)=CMPSEP_$TR(PERSON(1,8),TMP," ")
  1. S VAFHLROL(4,2,1)=REPSEP_$TR(PERSON(2,1),TMP," ")
  1. F TMP=1:1:7 S VAFHLROL(4,2,TMP+1)=CMPSEP_$TR(PERSON(2,TMP+1),TMP," ")
  1. S VAFHLROL(4,2,9)=CMPSEP_$TR(PERSON(2,9),TMP," ")
  1. DONE ;Collapse into output location
  1. D FIXLEN^VAFHLRO1("VAFHLROL",OUTARR,MAXLEN,0)
  1. ;Done
  1. Q