| 1 | BPSJUTL ;BHAM ISC/LJF - e-Pharmacy Utils ;16-OCT-2003
 | 
|---|
| 2 |  ;;1.0;E CLAIMS MGMT ENGINE;**1,2,5**;JUN 2004;Build 45
 | 
|---|
| 3 |  ;;Per VHA Directive 2004-038, this routine should not be modified.
 | 
|---|
| 4 |  ;
 | 
|---|
| 5 |  Q
 | 
|---|
| 6 |  ;
 | 
|---|
| 7 | HLP(PROTOCOL) ;  Find the Protocol IEN
 | 
|---|
| 8 |  Q +$O(^ORD(101,"B",PROTOCOL,0))
 | 
|---|
| 9 |  ;
 | 
|---|
| 10 | VAHL7ECH(HL) ; Hl7 Encoding Characters
 | 
|---|
| 11 |  S FS=$G(HL("FS")) I FS="" S FS="|"
 | 
|---|
| 12 |  S ECH=$G(HL("ECH")) I ECH="" S ECH="^~\&"
 | 
|---|
| 13 |  S CPS=$E(ECH),REP=$E(ECH,2)
 | 
|---|
| 14 |  ;
 | 
|---|
| 15 |  Q
 | 
|---|
| 16 |  ;
 | 
|---|
| 17 | MSG(BPSJMM,BPSJRTN) ; Message Handler
 | 
|---|
| 18 |  ;
 | 
|---|
| 19 |  N XMDUZ,XMSUB,XMY,XMTEXT,BPMSJMG
 | 
|---|
| 20 |  ;
 | 
|---|
| 21 |  I $G(U)="" S U="^"
 | 
|---|
| 22 |  I $G(BPSJRTN)]"" S BPSJMM(.0001)="Source Process: "_BPSJRTN
 | 
|---|
| 23 |  S BPMSJMG=$O(^BPS(9002313.99,0)) Q:'BPMSJMG
 | 
|---|
| 24 |  S BPMSJMG=+$G(^BPS(9002313.99,BPMSJMG,"VITRIA")) Q:'BPMSJMG
 | 
|---|
| 25 |  S BPMSJMG=$G(^VA(200,BPMSJMG,.15)) Q:BPMSJMG=""
 | 
|---|
| 26 |  S XMY(BPMSJMG)="",XMTEXT="BPSJMM(",XMSUB="ECME Registration Problem."
 | 
|---|
| 27 |  D ^XMD
 | 
|---|
| 28 |  ;
 | 
|---|
| 29 |  Q
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 | VA200NM(VAIX,VATITLE,HL) ;
 | 
|---|
| 32 |  ;
 | 
|---|
| 33 |  N RETDATA,BPSNMDAT
 | 
|---|
| 34 |  N FS,CPS,REP
 | 
|---|
| 35 |  ;
 | 
|---|
| 36 |  I '$G(VAIX) Q ""
 | 
|---|
| 37 |  S BPSNMDAT=$P($G(^VA(200,VAIX,0)),U,1) I BPSNMDAT="" Q ""
 | 
|---|
| 38 |  ;
 | 
|---|
| 39 |  D VAHL7ECH(.HL)
 | 
|---|
| 40 |  D STDNAME^XLFNAME(.BPSNMDAT,"C")
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 |  S RETDATA=$G(BPSNMDAT("FAMILY"))              ;1
 | 
|---|
| 43 |  S RETDATA=RETDATA_CPS_$G(BPSNMDAT("GIVEN"))   ;2
 | 
|---|
| 44 |  S RETDATA=RETDATA_CPS_$G(BPSNMDAT("MIDDLE"))  ;3
 | 
|---|
| 45 |  S RETDATA=RETDATA_CPS_$G(BPSNMDAT("SUFFIX"))  ;4
 | 
|---|
| 46 |  S RETDATA=RETDATA_CPS_$G(BPSNMDAT("PREFIX"))  ;5
 | 
|---|
| 47 |  S RETDATA=RETDATA_CPS_$G(BPSNMDAT("DEGREE"))  ;6
 | 
|---|
| 48 |  ;
 | 
|---|
| 49 |  S VATITLE=$P($G(^VA(200,VAIX,0)),U,9)
 | 
|---|
| 50 |  I VATITLE S VATITLE=$G(^DIC(3.1,VATITLE,0))
 | 
|---|
| 51 |  ;
 | 
|---|
| 52 |  Q RETDATA
 | 
|---|
| 53 |  ;
 | 
|---|
| 54 | VA20013(VAIX,HL) ; Build the HL7 Contact Means data field
 | 
|---|
| 55 |  ;
 | 
|---|
| 56 |  N FDATA,RETDATA
 | 
|---|
| 57 |  N FS,CPS,REP
 | 
|---|
| 58 |  ;
 | 
|---|
| 59 |  I '$G(VAIX) Q ""
 | 
|---|
| 60 |  ; VAIX is the index to ^VA(200,n
 | 
|---|
| 61 |  D VAHL7ECH(.HL)
 | 
|---|
| 62 |  S RETDATA=$P($G(^VA(200,VAIX,.15)),U,1)   ; LJF@DAOU.COM
 | 
|---|
| 63 |  I RETDATA]"",RETDATA["@" S RETDATA=CPS_"NET"_CPS_"INTERNET"_CPS_RETDATA
 | 
|---|
| 64 |  S FDATA=$$EN^BPSJPHNM(VAIX,CPS,REP)
 | 
|---|
| 65 |  I $L(FDATA) D
 | 
|---|
| 66 |  . I $L(RETDATA) S RETDATA=RETDATA_REP
 | 
|---|
| 67 |  . S RETDATA=RETDATA_FDATA
 | 
|---|
| 68 |  Q RETDATA
 | 
|---|
| 69 |  ;
 | 
|---|
| 70 | ENCODE(INSTR,TCH) ;  Encode data - Primarily HL7
 | 
|---|
| 71 |  N X,WCHR,OSTR
 | 
|---|
| 72 |  S OSTR=""
 | 
|---|
| 73 |  I $G(INSTR)]"" F X=1:1:$L(INSTR) D  S OSTR=OSTR_WCHR
 | 
|---|
| 74 |  . S WCHR=$E(INSTR,X) I $D(TCH(WCHR)) S WCHR=TCH(WCHR)
 | 
|---|
| 75 |  Q OSTR
 | 
|---|
| 76 |  ;
 | 
|---|
| 77 | SPAR(HL,BPSJSEG,HCTS) ;  Segment Parsing
 | 
|---|
| 78 |  N II,IJ,IK,ISDATA
 | 
|---|
| 79 |  N FS,CPS,REP,ECH
 | 
|---|
| 80 |  ;
 | 
|---|
| 81 |  I '$G(HCTS) Q
 | 
|---|
| 82 |  ;
 | 
|---|
| 83 |  D VAHL7ECH(.HL)
 | 
|---|
| 84 |  M ISDATA=^TMP($J,"BPSJHLI",HCTS)
 | 
|---|
| 85 |  S IK=0,IJ=1,II=""
 | 
|---|
| 86 |  F  S II=$O(ISDATA(II)) Q:II=""  D
 | 
|---|
| 87 |  . S ISDATA=$G(ISDATA(II)) Q:ISDATA=""
 | 
|---|
| 88 |  . F  D  Q:ISDATA=""
 | 
|---|
| 89 |  . . S IK=IK+1,BPSJSEG(IJ,IK)=$P(ISDATA,FS)
 | 
|---|
| 90 |  . . S $P(ISDATA,FS)=""
 | 
|---|
| 91 |  . . I $E(ISDATA)=FS S IJ=IJ+1,$E(ISDATA)=""
 | 
|---|
| 92 |  ;
 | 
|---|
| 93 |  ; Promote data in 1st subnode and kill subnode
 | 
|---|
| 94 |  S II=""
 | 
|---|
| 95 |  F  S II=$O(BPSJSEG(II)) Q:II=""  D
 | 
|---|
| 96 |  . S IJ=$O(BPSJSEG(II,"")) Q:'IJ
 | 
|---|
| 97 |  . S BPSJSEG(II)=BPSJSEG(II,IJ) K BPSJSEG(II,IJ)
 | 
|---|
| 98 |  Q
 | 
|---|