| 1 | BPSJPREG ;BHAM ISC/LJF - HL7 Registration MFN Message ;21-NOV-2003 | 
|---|
| 2 | ;;1.0;E CLAIMS MGMT ENGINE;**1,3,2,5**;JUN 2004;Build 45 | 
|---|
| 3 | ;;Per VHA Directive 2004-038, this routine should not be modified. | 
|---|
| 4 | ; | 
|---|
| 5 | ;**Program Description** | 
|---|
| 6 | ;  This program will process the outgoing registration MFN message | 
|---|
| 7 | ; | 
|---|
| 8 | ;  Variable | 
|---|
| 9 | ; HL      = HL7 parameters | 
|---|
| 10 | ; HL7DTG  = Date time in HL7 format | 
|---|
| 11 | ; HLECH   = HL7 Encoding Characters | 
|---|
| 12 | ; HLEID   = HL7 Link id | 
|---|
| 13 | ; HLFS    = HL7 Field separator | 
|---|
| 14 | ; HLLNK   = HL7 E-Pharm Link | 
|---|
| 15 | ; HLRESET = HL7 generate results | 
|---|
| 16 | ; IPP     = IP Port | 
|---|
| 17 | ; IPA     = IP Address | 
|---|
| 18 | ; MCT     = Message Count | 
|---|
| 19 | ; MGRP    = E-Mail message group | 
|---|
| 20 | ; MSG     = Message | 
|---|
| 21 | ; | 
|---|
| 22 | ; Don't allow direct execution | 
|---|
| 23 | ; | 
|---|
| 24 | W !!!,"DIRECT ENTRY NOT ALLOWED",!!! | 
|---|
| 25 | Q | 
|---|
| 26 | ; | 
|---|
| 27 | REG(PHARMIX,BPSJVAL) ;  Registration message for when a site installs | 
|---|
| 28 | ; | 
|---|
| 29 | N HL,HL7DTG,HLECH,HLEID,HLFS,HLLNK,HLPRO,BPSHLRS,IPA,IPP,NPKEY,NCPDP | 
|---|
| 30 | N MGRP,MCT,MSG,TAXID,ZRPSEG,BPSJVAL2,BPSJPRES | 
|---|
| 31 | ; | 
|---|
| 32 | S (MCT,TAXID)=0,BPSJVAL=$G(BPSJVAL) | 
|---|
| 33 | ; | 
|---|
| 34 | I '$G(PHARMIX) Q | 
|---|
| 35 | K ^TMP("HLS",$J) | 
|---|
| 36 | ; | 
|---|
| 37 | ; NPI Processing | 
|---|
| 38 | ; Get DropDeadDate and Date/Time Last Change | 
|---|
| 39 | N BPSJAPI,BPSJNPI,BPSJNDT,BPSJOP,BPSJOPS,BPSJDDD,NPKEY | 
|---|
| 40 | S BPSJDDD=$$NPIREQ^BPSNPI(DT) | 
|---|
| 41 | N NOW,%,%H,%I,X D NOW^%DTC S BPSJNDT=% | 
|---|
| 42 | ; Get OP site for pharmacy and NPIAPI | 
|---|
| 43 | S BPSJOP=0,BPSJAPI="" | 
|---|
| 44 | F  S BPSJOP=$O(^BPS(9002313.56,PHARMIX,"OPSITE",BPSJOP)) Q:'BPSJOP  D  I BPSJAPI'="" Q | 
|---|
| 45 | . S BPSJOPS=$G(^BPS(9002313.56,PHARMIX,"OPSITE",BPSJOP,0)) | 
|---|
| 46 | . S BPSJAPI=$$NPI^BPSNPI("Pharmacy_ID",BPSJOPS) | 
|---|
| 47 | . I $P(BPSJAPI,U,1)=-1 S BPSJAPI="" Q | 
|---|
| 48 | . I $P(BPSJAPI,U)>0 S BPSJAPI=$P(BPSJAPI,U) | 
|---|
| 49 | ; Check for existing NPI | 
|---|
| 50 | S BPSJNPI=$P($G(^BPS(9002313.56,PHARMIX,"NPI")),U) | 
|---|
| 51 | I 'BPSJAPI,BPSJNPI,BPSJVAL<2 D | 
|---|
| 52 | . N DA,DIC,DIE,DINUM,DIR,DIRUT,DIROUT,DLAYGO,DR,DTOUT,DUOUT,X,Y | 
|---|
| 53 | . S DA=PHARMIX,DIE=$$ROOT^DILFD(9002313.56) | 
|---|
| 54 | . S DR="41.01///@;41.02///@" D ^DIE | 
|---|
| 55 | I BPSJAPI,BPSJVAL<2 D | 
|---|
| 56 | . S ^XTMP("BPSJ",0)=(BPSJNDT+7)_U_BPSJNDT_U_"BPS NPI HL7 DATA" | 
|---|
| 57 | . S ^XTMP("BPSJ","NPI",BPSJAPI)=PHARMIX_U_BPSJNDT | 
|---|
| 58 | ; | 
|---|
| 59 | ;  Get Link data from HL7 table | 
|---|
| 60 | S HLPRO="BPSJ REGISTER",(IPA,IPP)="" | 
|---|
| 61 | S HLLNK=$$FIND1^DIC(870,"",,"EPHARM OUT","B") | 
|---|
| 62 | I HLLNK S IPA=$$GET1^DIQ(870,HLLNK_",",400.01),IPP=$$GET1^DIQ(870,HLLNK_",",400.02) | 
|---|
| 63 | ; | 
|---|
| 64 | ;  Error if any missing data | 
|---|
| 65 | I IPA=""!(IPP="") S MCT=MCT+1,MSG(MCT)="IP Address or Port is not defined.  " | 
|---|
| 66 | ; | 
|---|
| 67 | ;  Initialize the HL7 | 
|---|
| 68 | D INIT^HLFNC2(HLPRO,.HL) | 
|---|
| 69 | S HLFS=$G(HL("FS")) I HLFS="" S HLFS="|" | 
|---|
| 70 | S HLECH=$E($G(HL("ECH"),1)) I HLECH="" S HLECH="^" | 
|---|
| 71 | S HL("SITE")=$$SITE^VASITE,HL("SAF")=$P(HL("SITE"),U,2,3) | 
|---|
| 72 | S HL("EPPORT")=IPP,HLEID=$$HLP^BPSJUTL(HLPRO) | 
|---|
| 73 | ; | 
|---|
| 74 | ;Get fileman date/time, ensuring seconds are included: 3031029.135636 | 
|---|
| 75 | S HL7DTG=$E($$HTFM^XLFDT($H)_"000000",1,14) | 
|---|
| 76 | ;Set HL7 Date/Time format: 20031029135636-0400 | 
|---|
| 77 | S HL7DTG=$$FMTHL7^XLFDT(HL7DTG) | 
|---|
| 78 | ; | 
|---|
| 79 | ;  Set the ZRP Segment | 
|---|
| 80 | D EN^BPSJZRP(.HL,PHARMIX,.ZRPSEG,BPSJAPI,.NCPDP) | 
|---|
| 81 | M ^TMP("HLS",$J,3)=ZRPSEG K ZRPSEG | 
|---|
| 82 | ; | 
|---|
| 83 | ;  Set the MFE segment | 
|---|
| 84 | N BPSMFE S BPSMFE="MUP" | 
|---|
| 85 | S NPKEY=$$NPKEY^BPSNPI(NCPDP,BPSJNPI,BPSJAPI) | 
|---|
| 86 | I NPKEY D | 
|---|
| 87 | . I '$$BPSACTV^BPSUTIL(PHARMIX) S BPSMFE="MDC" | 
|---|
| 88 | . S ^TMP("HLS",$J,2)="MFE"_HLFS_BPSMFE_HLFS_HLFS_HL7DTG | 
|---|
| 89 | . S ^TMP("HLS",$J,2)=^TMP("HLS",$J,2)_HLFS_NPKEY_HLFS_"ST" | 
|---|
| 90 | ; | 
|---|
| 91 | ;   Set the MFI segment | 
|---|
| 92 | S ^TMP("HLS",$J,1)="MFI"_HLFS_"Pharmacy Table"_HLFS_HLFS_"UPD"_HLFS | 
|---|
| 93 | S ^TMP("HLS",$J,1)=^TMP("HLS",$J,1)_HL7DTG_HLFS_HL7DTG_HLFS_"NE" | 
|---|
| 94 | ; | 
|---|
| 95 | S BPSJPRES=$$VAL2^BPSJVAL(BPSJVAL,BPSJDDD)  ; 0 = ok | 
|---|
| 96 | I BPSJVAL=3 G FINI   ; Just checking to see if data valid. | 
|---|
| 97 | ; | 
|---|
| 98 | ;-Check if msg valid. | 
|---|
| 99 | I 'BPSJPRES D  G FINI | 
|---|
| 100 | . N BPSHLRS | 
|---|
| 101 | . D GENERATE^HLMA(HLEID,"GM",1,.BPSHLRS,"") | 
|---|
| 102 | . I $P($G(BPSHLRS),U,2)]"" D  Q | 
|---|
| 103 | .. I BPSJVAL D  Q   ; Interactive: show no success | 
|---|
| 104 | ... W !!,"ECME Pharmacy Registration HL7 Message not created: "_BPSHLRS | 
|---|
| 105 | ... W !," PHARMIX: "_PHARMIX_"" | 
|---|
| 106 | .. S MCT=MCT+1,MSG(MCT)="ECME Pharmacy Registration HL7 Message not created. (PHARMIX: "_PHARMIX_")" | 
|---|
| 107 | .. S MCT=MCT+1,MSG(MCT)=BPSHLRS | 
|---|
| 108 | .. D MSG^BPSJUTL(.MSG,"ECME Pharmacy Registration") | 
|---|
| 109 | . I BPSJVAL D    ;Interactive: show success | 
|---|
| 110 | .. W !!,"ECME Pharmacy Registration HL7 Message was created successfully." | 
|---|
| 111 | ; | 
|---|
| 112 | ; | 
|---|
| 113 | FINI ; Clean up | 
|---|
| 114 | K ^TMP("HLS",$J) | 
|---|
| 115 | Q | 
|---|