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

IBARXCHL.m

Go to the documentation of this file.
  1. IBARXCHL ;ALB/CLT- CERNER RXCOPAY BUILD THE DFT-P03 MESSAGE ; 08 Mar 2021
  1. ;;2.0;INTEGRATED BILLING;**676,717,726**;21-MAR-94;Build 1
  1. ;
  1. ; Send to Cerner the IBARXC-SEND - DFT^P03 message with a transaction
  1. ;
  1. EN(DFN,FT1IEN) ;MAIN ROUTINE ENTRY POINT
  1. N PARMS,MSG,HDR,SEG,FIELD,VALUE,WHOTO,ERROR,%,%P1,XXX,X
  1. N ICN,NAME,NODE0,SETID,TRANSID,STAT,RXNUM,UNITS,TCHRG,DESC,BILLED,UNBILLED,PARENT,SITENM
  1. ;
  1. D MSH,SEND
  1. G END
  1. ;
  1. MSH ;ENTER MSG PARAMETERS AND START THR MSG BUILD
  1. N PARMS K ^TMP("DFT")
  1. S PARMS("COUNTRY")="USA"
  1. S PARMS("EVENT")="P03"
  1. S PARMS("MESSAGE TYPE")="DFT"
  1. S PARMS("SENDING APPLICATION")="IBARXC-SEND"
  1. S PARMS("RECEIVING APPLICATION")="IBARXC-RECV"
  1. S PARMS("VERSION")="2.3"
  1. S PARMS("MESSAGE STRUCTURE")="DFT_P03"
  1. S MSG="^TMP(DFT"
  1. S X=$$NEWMSG^HLOAPI(.PARMS,.MSG,.ERROR)
  1. ;
  1. EVN ;BUILD THE EVN SEGMENT
  1. D SET^HLOAPI(.SEG,"EVN",0)
  1. D SET^HLOAPI(.SEG,"P03",1)
  1. D NOW^%DTC S %P1=% S VALUE=$$FMTHL7^XLFDT(%P1)
  1. D SET^HLOAPI(.SEG,VALUE,2)
  1. S X=$$ADDSEG^HLOAPI(.MSG,.SEG,.ERROR)
  1. ;
  1. PID ;ADD PID SEGMENT
  1. D SET^HLOAPI(.SEG,"PID",0)
  1. D SET^HLOAPI(.SEG,"1",1)
  1. S ICN=$$ICN^IBARXMU(DFN) ;set ICN
  1. D SET^HLOAPI(.SEG,ICN,3)
  1. S NAME=$P(^DPT(DFN,0),U,1) ;set patient name
  1. D SET^HLOAPI(.SEG,$P(NAME,",",1),5)
  1. D SET^HLOAPI(.SEG,$P(NAME,",",2),5,2)
  1. S X=$$ADDSEG^HLOAPI(.MSG,.SEG,.ERROR)
  1. ;
  1. FT1 ;INPUT FT1 DATA FOR ONE RX COPAY
  1. S NODE0=$G(^IBAM(354.71,FT1IEN,0))
  1. Q:NODE0=""
  1. ;Null Unbilled issue
  1. I $P(NODE0,"^",12)="" S NODE0=$$NULLFIX^IBARXCSH(FT1IEN,NODE0)
  1. D SET^HLOAPI(.SEG,"FT1",0)
  1. S SEG="FT1",SETID=1
  1. D SET^HLOAPI(.SEG,SETID,1)
  1. S TRANSID=$P(NODE0,"^",1)
  1. D SET^HLOAPI(.SEG,TRANSID,2)
  1. S %P1=$P(NODE0,"^",3) S %P1=$$FMTHL7^XLFDT(%P1)
  1. D SET^HLOAPI(.SEG,%P1,4)
  1. D SET^HLOAPI(.SEG,"T",6)
  1. S STAT=$P(NODE0,"^",5)
  1. S STAT=$S(STAT="Y":"X",STAT="P":"C",STAT="X":"X",1:"C")
  1. D SET^HLOAPI(.SEG,STAT,7)
  1. S RXNUM=$P(NODE0,"^",6)
  1. S UNITS=$P(NODE0,"^",7)
  1. S TCHRG=$P(NODE0,"^",8)
  1. S DESC=$P(NODE0,"^",9)
  1. S DESC=$$BDESC(DESC)
  1. S BILLED=$P(NODE0,"^",11)
  1. S UNBILLED=$P(NODE0,"^",12)
  1. D SET^HLOAPI(.SEG,DESC,10)
  1. D SET^HLOAPI(.SEG,RXNUM,11)
  1. D SET^HLOAPI(.SEG,TCHRG,12)
  1. D SET^HLOAPI(.SEG,BILLED,13)
  1. D SET^HLOAPI(.SEG,UNBILLED,14)
  1. D SET^HLOAPI(.SEG,UNITS,15)
  1. ;DETERMINE IF THERE IS A PARENT ID
  1. S PARENT=$P(NODE0,"^",10)
  1. I PARENT="" S PARENT=FT1IEN
  1. S PARENT=$$GET1^DIQ(354.71,PARENT_",",.01,"E")
  1. D SET^HLOAPI(.SEG,PARENT,17)
  1. S SITENM=$$FAC^IBARXMU($P(NODE0,"^",13))
  1. D SET^HLOAPI(.SEG,$P(SITENM,"^",2),18)
  1. D SET^HLOAPI(.SEG,$P(SITENM,"^",1),18,2)
  1. S X=$$ADDSEG^HLOAPI(.MSG,.SEG,.ERROR)
  1. Q
  1. ;
  1. BDESC(BDESC) ;format Brief Description
  1. ; Brief Description to 'Rx # - Drug Name - Units' maximum of 20 characters, remove delimeter characters
  1. ; Input: Brief Description from Transaction (#354.71)
  1. ; Output: BDN - characters '|-^~\&' replaced by ' ' in Drug Name, Drug Name shortened to less than 20 characters
  1. N BDP,BD1,BD2,BD3,BD2E,BDL,BDN
  1. ;
  1. I $G(BDESC)="" Q ""
  1. ;
  1. S BDP=$L(BDESC,"-")
  1. S BD1=$P(BDESC,"-",1)
  1. S BD2=$P(BDESC,"-",2,(BDP-1))
  1. S BD3=$P(BDESC,"-",BDP)
  1. ;
  1. S BD2E=$TR(BD2,"|-^~\&"," ") ; extract characters from drug name
  1. S BDL=20-$L(BD1_"--"_BD3) ; number of characters available for drug name
  1. ;
  1. S BDN=BD1_"-"_$E(BD2E,1,BDL)_"-"_BD3 ; max length of 20 characters by shortening drug name
  1. ;
  1. Q BDN
  1. ;
  1. SEND ;SEND MESSAGE AND QUIT
  1. S WHOTO("RECEIVING APPLICATION")="IBARXC-RECV"
  1. S WHOTO("STATION NUMBER")="200CRNR"
  1. S WHOTO("MIDDLEWARE LINK NAME")="IBARXCVDF"
  1. S PARMS("SENDING APPLICATION")="IBARXC-SEND"
  1. S XXX=$$SENDONE^HLOAPI1(.MSG,.PARMS,.WHOTO,.ERROR)
  1. Q
  1. END ;CLEAN UP AND QUIT
  1. Q