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

XUPSSTF.m

Go to the documentation of this file.
  1. XUPSSTF ;ALB/CMC - Build STF segment;Aug, 6 2010
  1. ;;8.0;KERNEL;**551**;Jul 10, 1995;Build 2
  1. ;
  1. Q
  1. EN(XUPSIEN,XUPSSTR,HL,XUPSREC,XUPSSTF) ; -- entry point
  1. ;Input:
  1. ;XUPSIEN - New Person Internal Entry Number
  1. ;XUPSSTR - sequence numbers which should be used (2,3,4,5,6,10,11)
  1. ;HL - HL array variables from INIT call
  1. ;Output:
  1. ;XUPSREC - First 245 characters
  1. ;XUPSSTF(1..n)=continuation nodes if results > 245 characters
  1. ;
  1. N XUPSSUB1,XUPSSUB2,XUPSSUB3,XUPSSUB4,XUPSSSN,XUPSDOB,XUPSPH
  1. N XUPSNO,XUPSSEX,XUPSNAMC,XUPSNAME,XUPSNAM1,XUPSREP,XUPSVID,XUPSCAT,XUPSNPI,TADDR
  1. N DA,DIE,DR,XUPSNAM2,XUPSVER,XUPSADD,XUPSADDR,XUPSADD1,XUPSADD2,XUPSI,XUPSSEG,HLFS,COMP,SUBCOMP
  1. ;
  1. I '$D(HL) S XUPSREC="-1^missing HL variables" Q
  1. S HLFS=HL("FS"),COMP=$E(HL("ECH")),HLES=$E(HL("ECH"),2),SUBCOMP=$E(HL("ECH"),4)
  1. N ARRAY,TMP
  1. S TMP=$$GET^XUPSGS(XUPSIEN,.ARRAY)
  1. I '$D(ARRAY) S XUPSREC="-1^No entry" Q
  1. ;SEQUENCE 2
  1. N XUPSRCTR
  1. I XUPSSTR["2," D
  1. .S (XUPSSUB1,XUPSSUB2,XUPSSUB3)=""
  1. .S XUPSRCTR=0
  1. .;DUZ
  1. .S XUPSSUB1=XUPSIEN_COMP_COMP_COMP_"USVHA"_SUBCOMP_SUBCOMP_"0363"_COMP_"PN"_COMP
  1. .S XUPSSUB1=XUPSSUB1_"VA FACILITY ID"_SUBCOMP_$P($$SITE^VASITE(),"^",3)_SUBCOMP_"L"_COMP_COMP
  1. .S XUPSRCTR=XUPSRCTR+1
  1. .S XUPSSEG(2,XUPSRCTR)=XUPSSUB1
  1. .;SSN
  1. .S XUPSSUB2=$S(ARRAY("SSN")]"":ARRAY("SSN"),1:HL("Q"))_COMP_COMP_COMP_"USSSA"_SUBCOMP_SUBCOMP_"0363"_COMP_"SS"
  1. .S XUPSSUB2=XUPSSUB2_COMP_"VA FACILITY ID"_SUBCOMP_$P($$SITE^VASITE(),"^",3)_SUBCOMP_"L"
  1. .S XUPSRCTR=XUPSRCTR+1
  1. .S XUPSSEG(2,XUPSRCTR)=XUPSSUB2
  1. .;NPI
  1. .S $P(XUPSSUB3,COMP,1)=$S(ARRAY("NPI")]"":ARRAY("NPI"),1:HL("Q"))_COMP_COMP_COMP_"USVHA"_SUBCOMP_SUBCOMP_"0363"
  1. .S XUPSSUB3=XUPSSUB3_COMP_"NPI"_COMP_"VA FACILITY ID"_SUBCOMP_$P($$SITE^VASITE(),"^",3)_SUBCOMP_"L"
  1. .S XUPSRCTR=XUPSRCTR+1
  1. .S XUPSSEG(2,XUPSRCTR)=XUPSSUB3
  1. .;Pointer to PAID
  1. .S $P(XUPSSUB4,COMP,1)=$S(ARRAY("PAID")]"":ARRAY("PAID"),1:HL("Q"))_COMP_COMP_COMP_"USVHA"_SUBCOMP_SUBCOMP_"0363"
  1. .S XUPSSUB4=XUPSSUB4_COMP_"EI"_COMP_"VA FACILITY ID"_SUBCOMP_$P($$SITE^VASITE(),"^",3)_SUBCOMP_"L"
  1. .S XUPSRCTR=XUPSRCTR+1
  1. .S XUPSSEG(2,XUPSRCTR)=XUPSSUB4
  1. ;NAME
  1. I XUPSSTR["3," D ;get name data
  1. .;patient name last^first^middle^suffix^prefix^^"L" for legal
  1. .S XUPSSEG(3)=$S(ARRAY("Surname")'="":ARRAY("Surname"),1:HL("Q"))_COMP_$S($G(ARRAY("FirstName"))'="":$G(ARRAY("FirstName")),1:HL("Q"))_COMP
  1. .S XUPSSEG(3)=XUPSSEG(3)_$S($G(ARRAY("MiddleName"))'="":$G(ARRAY("MiddleName")),1:HL("Q"))_COMP_$S($G(ARRAY("Suffix"))'="":$G(ARRAY("Suffix")),1:HL("Q"))_COMP
  1. .S XUPSSEG(3)=XUPSSEG(3)_$S($G(ARRAY("Prefix"))'="":$G(ARRAY("Prefix")),1:HL("Q"))_COMP_COMP_"L"
  1. ;SEX
  1. I XUPSSTR["5," D ;get sex
  1. .S XUPSSEG(5)=$S($G(ARRAY("Gender"))'="":$G(ARRAY("Gender")),1:HL("Q"))
  1. ;DOB
  1. I XUPSSTR["6," D ;get dob
  1. .S XUPSSEG(6)=$S($G(ARRAY("DOB"))'="":$$HLDATE^HLFNC($G(ARRAY("DOB"))),1:HL("Q"))
  1. ;Home Phone #
  1. I XUPSSTR[",10" D
  1. .I $G(ARRAY("ResPhone"))]"" S XUPSPH=$$HLPHONE^HLFNC($G(ARRAY("ResPhone"))) D HL7TXT(.XUPSPH,.HL,HLES) ;convert HL characters
  1. .I $G(ARRAY("ResPhone"))="" S XUPSPH=HL("Q")
  1. .;PRN for Home Phone Number.
  1. .S $P(XUPSPH,COMP,2)="PRN",$P(XUPSPH,COMP,3)="PH"
  1. .S XUPSSEG(10)=XUPSPH
  1. ;Address
  1. I XUPSSTR[",11" D
  1. .N XUPSA,HL7STRG
  1. .S HL7STRG=$G(ARRAY("ResAddL1"))
  1. .I HL7STRG'="" D HL7TXT(.HL7STRG,.HL,HLES)
  1. .S $P(TADDR,COMP)=$S($G(HL7STRG)'="":HL7STRG,1:HL("Q"))
  1. .S HL7STRG=$G(ARRAY("ResAddL2")) D HL7TXT(.HL7STRG,.HL,HLES)
  1. .S $P(TADDR,COMP,2)=$S($G(HL7STRG)'="":HL7STRG,1:HL("Q"))
  1. .S HL7STRG=$G(ARRAY("ResAddCity")) D HL7TXT(.HL7STRG,.HL,HLES)
  1. .S $P(TADDR,COMP,3)=$S($G(HL7STRG)'="":HL7STRG,1:HL("Q"))
  1. .S $P(TADDR,COMP,4)=$S($G(ARRAY("ResAddState"))'="":$G(ARRAY("ResAddState")),1:HL("Q"))
  1. .S $P(TADDR,COMP,5)=$S($G(ARRAY("ResAddZip4"))'="":ARRAY("ResAddZip4"),1:HL("Q"))
  1. .S HL7STRG=$G(ARRAY("ResAddL3")) D HL7TXT(.HL7STRG,.HL,HLES)
  1. .S $P(TADDR,COMP,8)=$S($G(HL7STRG)'="":HL7STRG,1:HL("Q"))
  1. .;Country set to null - not used by PSIM
  1. .S $P(TADDR,COMP,6)=""
  1. .;Address type set to P for permanent
  1. .S $P(TADDR,COMP,7)="P"
  1. .S XUPSSEG(11)=TADDR
  1. ;
  1. D MAKEIT^XUPSHL7B("STF",.XUPSSEG,.XUPSREC,.XUPSSTF)
  1. Q
  1. ;
  1. HL7TXT(HL7STRG,HL,HLES) ; Replace occurrences of embedded HL7 delimiters with
  1. ; HL7 escape sequence
  1. ;
  1. ; Inputs: HL7STRG - Data string to be checked
  1. ; HL("ECH") - HL7 delimiter string
  1. ; Delimiters MUST be in the following order,
  1. ; Escape, Field, Component, Repeat, Subcomponent
  1. ; Example: \^~|&
  1. ;
  1. ; Output: HL7XTRG - Data string with escape sequence added (if needed)
  1. ;
  1. N OCHR,RCHR,RCHRI,TYPE,I,HLES2
  1. ;
  1. I $G(HL("COMP"))="" S HL("COMP")=$E(HL("ECH"),1),HL("REP")=$E(HL("ECH"),2),HL("SUBCOMP")=$E(HL("ECH"),4)
  1. ; Set HL7 escape char
  1. S HLES2=HLES_HL("FS")_HL("COMP")_HL("REP")_HL("SUBCOMP")
  1. ;
  1. ; Search for occurrence of each delimiter and replace it with "\<type>\"
  1. F TYPE="E","F","C","R","S" D
  1. . S RCHRI=$S(TYPE="E":1,TYPE="F":2,TYPE="C":3,TYPE="R":4,TYPE="S":5)
  1. . ;
  1. . ; OCHR=original char, RCHR=replacement char
  1. . S OCHR=$E(HLES2,RCHRI),RCHR=$E("EFSRT",RCHRI) Q:'$F(HL7STRG,OCHR)
  1. . F I=1:1 Q:$E(HL7STRG,I)="" I $E(HL7STRG,I)=OCHR S HL7STRG=$E(HL7STRG,1,I-1)_HLES_RCHR_HLES_$E(HL7STRG,I+1,999),I=I+2
  1. Q