AHHLBL ;NCH/RLP Patient Mailing Labels - Excel delimited 12-Feb-02
;;V1.0
;
; *** This routine can be called by FM - Print File Entries
; *** example PRINT FIELD: W $$BEG^AHHLBL(D0)
;
; *** NOTE: kill the variable PRTHEAD before you call BEG(DFN).
; *** If you don't, the second run will not print the Header for
; *** the columns.
;
BEG(DFN) ;
I $G(DFN)'>0 Q ""
;
N XUNAME,NAME,ADD1,ADD2,ADD3,CITY,STATE,STATEABB,ZIP,SEX,COURTESY
N RECSTAT,LABEL,IEN,FMLNAME,LGTHNAME,LASTNAME,LGTHCNME,ADDLINE,FIELD
N CHARCTER,NUMBER
;
;
; --- If var PRTHEAD equal to 0, Heading will NOT Print ---
; --- If var PRTHEAD equal to 1, Heading Will Print ---
; --- If var PRTHEAD is not present, Heading will Print ---
;
HEAD S PRTHEAD=$G(PRTHEAD,1)
I PRTHEAD D W LABEL,! S PRTHEAD=0
. S LABEL="DFN^"_"Mr/s^"_"Last Name^"_"Full Name^"_"Add1^"_"Add2^"_"Add3
^"_"City^"_"State^"_"StateAbb^"_"Zip^"_"NameLgth^"_"NameLgth Mr/s^"_"Status^"
;
S IEN=DFN_"^"
S RECSTAT=""
;
;
; --- Format Name, First Middle Last Prefix, Upper/Lower case ---
;
E1 S XUNAME("FILE")=2,XUNAME("FIELD")=.01,XUNAME("IENS")=DFN
S NAME=$$NAMEFMT^XLFNAME1(.XUNAME,"G","M")
S FMLNAME=NAME_"^"
S LGTHNAME=($L(NAME)-1)_"^"
;
;
; --- Extract Last Name and Gender ---
;
E2 D DEM^VADPT
S LASTNAME=$P(VADM(1),",",1)_"^"
S SEX=$P(VADM(5),"^",1)
S COURTESY=$S(SEX="M":"Mr.",SEX="F":"Ms.",1:"")_"^"
S LGTHCNME=$L(COURTESY)+LGTHNAME_"^"
;
;
; --- Extract Address fields and make upper/lower case ---
; --- Flag record if No State Abbreviation ---
;
E3 D ADD^VADPT
S ADD1=$$MIX^XLFNAME1(VAPA(1))_"^"
S ADD2=$$MIX^XLFNAME1(VAPA(2))_"^"
S ADD3=$$MIX^XLFNAME1(VAPA(3))_"^"
S CITY=$$MIX^XLFNAME1(VAPA(4))_"^"
S STATE=$P(VAPA(5),"^",2),STATE=$$MIX^XLFNAME1(STATE)_"^"
S STATEABB=$P(VAPA(5),"^",1) D S STATEABB=STATEABB_"^"
. I STATEABB]"" S STATEABB=$P($G(^DIC(5,STATEABB,0)),"^",2)
. E S RECSTAT="REVIEW^"
S ZIP=$P(VAPA(6),"^",1)_"^"
;
;
; --- Lets check the integrity of the Address ---
; --- Flag record if there is No data in the Address Fields ---
;
INTEG F FIELD=FMLNAME,ADD1,CITY,STATE,ZIP Q:RECSTAT]"" D ;
. I $P(FIELD,"^",1)']"" S RECSTAT="REVIEW^"
;
;
; --- Flag record if 1st Address Line does not have a Number in it ---
;
I RECSTAT']"" S NUMBER=0 D I 'NUMBER S RECSTAT="REVIEW^"
. F CHARCTER=1:1:$L(ADD1) Q:NUMBER D ;
. . I "0123456789"[$E(ADD1,CHARCTER) S NUMBER=1
;
;
; --- Flag record if NC VAMC is the address ---
;
F ADDLINE=1:1:3 Q:RECSTAT]"" I VAPA(ADDLINE)]"" D ;
. I "3001 GREEN BAY"[$$UP^XLFSTR(VAPA(ADDLINE)) S RECSTAT="REVIEW^"
. I "3001 GREENBAY"[$$UP^XLFSTR(VAPA(ADDLINE)) S RECSTAT="REVIEW^"
. ;I "UPDATE"[$$UP^XLFSTR(VAPA(ADDLINE)) S RECSTAT="REVIEW^"
;
PRT S LABEL=IEN_COURTESY_LASTNAME_FMLNAME_ADD1_ADD2_ADD3_CITY_STATE_STATEABB
_ZIP_LGTHNAME_LGTHCNME_RECSTAT
;
K VADM,VAPA
Q LABEL
;
;
;
; --- Excute this Line Tag to get 'a feel' of the data layout ---
;
TEST D ^%ZIS U IO K PRTHEAD S DFN=0 F S DFN=$O(^DPT(DFN)) Q:DFN>100 W !,$$B
EG(DFN)
D ^%ZISC
Q