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

PRCHJS01.m

Go to the documentation of this file.
  1. PRCHJS01 ;OI&T/KCL - IFCAP/ECMS INTERFACE TRANSMIT 2237 TO ECMS;6/12/12
  1. ;;5.1;IFCAP;**167,174**;Oct 20, 2000;Build 23
  1. ;Per VHA Directive 2004-38, this routine should not be modified.
  1. ;
  1. SEND2237(PRC410R,PRCERR) ;Send 2237 to eCMS via HL7 messaging
  1. ;This function is the primary driver for retrieving and sending
  1. ;a 2237 transaction to eCMS in single HL7 message (OMN^O07).
  1. ;
  1. ;This function will:
  1. ; - Retrieve 2237 data elements and place them into a work global
  1. ; - Perform 2237 pre-validation checks on 2237 data elements
  1. ; - Build and transmit 2237 data via OMN^O07 message
  1. ;
  1. ; Input:
  1. ; PRC410R - (required) IEN of record in CONTROL POINT ACTIVITY (#410) file
  1. ;
  1. ; Output:
  1. ; Function value - ien of msg in HLO MESSAGES (#778) file on success, 0 on failure
  1. ; PRCERR - (optional) on failure, an error msg array is returned, pass by ref
  1. ; Error msg array format:
  1. ; PRCERR(1)
  1. ; PRCERR(2)
  1. ; PRCERR(3), etc.
  1. ;
  1. N PRCWORK ;name of work global containing the 2237 data elements
  1. N PRCRSLT ;function result
  1. ;
  1. ;init temp work global
  1. S PRCWORK=$NA(^TMP("PRCHJ2237",$J))
  1. K @PRCWORK
  1. ;
  1. S PRCRSLT=0
  1. ;
  1. D ;drops out of DO block on failure
  1. . ;
  1. . ;get 2237 data elements and place into work global
  1. . I '$$GET2237(PRC410R,PRCWORK,.PRCERR) S PRCERR(1)=$G(PRCERR) Q
  1. . ;
  1. . ;perform 2237 pre-validation checks on 2237 data elements
  1. . I '$$PRE2237(PRCWORK,.PRCERR) Q
  1. . ;
  1. . ;build and transmit 2237 data via OMN^O07 message
  1. . S PRCRSLT=$$OMNO07^PRCHJS04(PRCWORK,.PRCERR)
  1. . I $G(PRCERR)]"" S PRCERR(1)=$G(PRCERR)
  1. ;
  1. ;cleanup work global
  1. K @PRCWORK
  1. ;
  1. Q PRCRSLT
  1. ;
  1. ;
  1. GET2237(PRC410R,PRCWRK,PRCERR) ;Retrieve 2237 data elements
  1. ;This function is responsible for retrieving the 2237 data
  1. ;elements from the IFCAP database that will be transmitted
  1. ;to eCMS. The 2237 data elements will be placed into a temp
  1. ;work global.
  1. ;
  1. ; Input:
  1. ; PRC410R - (required) IEN of record in CONTROL POINT ACTIVITY (#410) file
  1. ; PRCWRK - (required) name of work global used to hold 2237 data elements
  1. ; Ex) S PRCWORK=$NA(^TMP("PRCHJ2237",$J))
  1. ;
  1. ; Output:
  1. ; Function value - 1 on success, 0 on failure
  1. ; PRCERR - (optional) on failure, an error message is returned, pass by ref
  1. ;
  1. N PRCRSLT ;function result
  1. ;
  1. S PRCRSLT=0
  1. ;
  1. D ;drops out of DO block on failure
  1. . ;
  1. . ;get CONTROL POINT ACTIVITY (#410) data
  1. . I '$$GET410^PRCHJS02(PRC410R,PRCWRK,.PRCERR) Q
  1. . ;
  1. . ;get 2237 line item data
  1. . I '$$GETITEMS^PRCHJS02(PRC410R,PRCWRK,.PRCERR) Q
  1. . ;
  1. . ;get REQUEST WORKSHEET (#443) data
  1. . I '$$GET443^PRCHJS03($P($G(@PRCWRK@("TRANUM")),U),PRCWRK,.PRCERR) Q
  1. . ;
  1. . ;if INVENTORY DISTRIBUTION POINT, then get GENERIC INVENTORY (#445) data
  1. . I +$G(@PRCWRK@("INVDIS"))>0 D Q:$G(PRCERR)
  1. . . I '$$GET445^PRCHJS03(+$G(@PRCWRK@("INVDIS")),PRCWRK,.PRCERR) Q
  1. . ;
  1. . ;if VENDOR POINTER, then get VENDOR (#440) data
  1. . I +$G(@PRCWRK@("VENDPT"))>0 D Q:$G(PRCERR)
  1. . . I '$$GET440^PRCHJS03(+$G(@PRCWRK@("VENDPT")),PRCWRK,.PRCERR) Q
  1. . ;
  1. . ;success
  1. . S PRCRSLT=1
  1. ;
  1. Q PRCRSLT
  1. ;
  1. ;
  1. PRE2237(PRCWRK,PRCER) ;Pre-validate 2237 data elements
  1. ;This function performs pre-validation checks on specified
  1. ;2237 data elements being transmitted to eCMS.
  1. ;
  1. ; Input:
  1. ; PRCWRK - (required) name of work global containing 2237 data elements
  1. ;
  1. ; Output:
  1. ; Function value - returns 1 if all validation checks passed, 0 otherwise
  1. ; PRCER - (optional) on failure, an error msg array is returned, pass by ref
  1. ; Error msg array format:
  1. ; PRCER(1)
  1. ; PRCER(2)
  1. ; PRCER(3), etc.
  1. ;
  1. N PRCSUB ;array subscript
  1. N PRCLINE ;array subscript for items
  1. N PRCITEML ;Line Item #
  1. N PRCNUM ;array subscript for item description
  1. N PRCIDX ;error array index
  1. N PRCRSLT ;function result
  1. ;
  1. S (PRCIDX,PRCRSLT)=0
  1. ;
  1. D
  1. . ;make sure this is a 2237
  1. . I ($P($G(@PRCWRK@("FRMTYP")),U)<2)!($P($G(@PRCWRK@("FRMTYP")),U)>4) S PRCER(PRCIDX+1)="This is not a 2237 transaction" Q
  1. . ;
  1. . ;check for 2237 null field values (eCMS required fields)
  1. . F PRCSUB="TRANUM","STANUM","RQSTDT","REQ","DTREQ","APOF","RQSRV","CTRLPT","COMMIT","ACTDATA" D
  1. . . I $P($G(@PRCWRK@(PRCSUB)),U)="" D
  1. . . . S PRCIDX=PRCIDX+1
  1. . . . S PRCER(PRCIDX)="Field "_$$GET1^DID(410,$$FIELD(PRCSUB),"","LABEL")_" is missing"
  1. . ;
  1. . ;loop thru Line Items on 2237 and check for null field values (eCMS required fields)
  1. . S PRCLINE=0
  1. . F S PRCLINE=$O(@PRCWRK@(PRCLINE)) Q:'PRCLINE D
  1. . . S PRCITEML=+$G(@PRCWRK@(PRCLINE,"ITLINE")) ;line item #
  1. . . ;check for null fields
  1. . . F PRCSUB="ITLINE","ITQTY","ITUOP","ITBOC","ITCOST" D
  1. . . . I $P($G(@PRCWRK@(PRCLINE,PRCSUB)),U)="" D
  1. . . . . S PRCIDX=PRCIDX+1
  1. . . . . S PRCER(PRCIDX)="Line item ("_PRCITEML_") field "_$$GET1^DID(410.02,$$FIELD(PRCSUB),"","LABEL")_" is missing."
  1. . . ;
  1. . . ;check for line item description
  1. . . I +$G(@PRCWRK@(PRCLINE,"ITDESC"))'>0 D
  1. . . . S PRCIDX=PRCIDX+1
  1. . . . S PRCER(PRCIDX)="Line item ("_PRCITEML_") field "_$$GET1^DID(410.02,$$FIELD("ITDESC"),"","LABEL")_" is missing."
  1. . ;
  1. . ;quit if error(s)
  1. . Q:$G(PRCIDX)
  1. . ;
  1. . ;otherwise success
  1. . S PRCRSLT=1
  1. ;
  1. Q PRCRSLT
  1. ;
  1. ;
  1. FIELD(PRCSUB) ;Return field number for subscript
  1. ;This function takes a given subscript in the 2237 work
  1. ;global and returns the corresponding field number.
  1. ;
  1. ; Input:
  1. ; PRCSUB - (required) subscript of 2237 work global
  1. ;
  1. ; Output:
  1. ; Function value - returns corresponding field number for subscript,
  1. ; null otherwise
  1. ;
  1. N PRCFLD ;function result
  1. S PRCFLD=""
  1. ;
  1. D ;drops out of DO block once field # is determined
  1. . ;
  1. . ;CONTROL POINT ACTIVITY (#410) fields
  1. . I PRCSUB="TRANUM" S PRCFLD=.01 Q
  1. . I PRCSUB="STANUM" S PRCFLD=.5 Q
  1. . I PRCSUB="RQSTDT" S PRCFLD=5 Q
  1. . I PRCSUB="REQ" S PRCFLD=40 Q
  1. . I PRCSUB="DTREQ" S PRCFLD=7 Q
  1. . I PRCSUB="APOF" S PRCFLD=42 Q
  1. . I PRCSUB="RQSRV" S PRCFLD=6.3 Q
  1. . I PRCSUB="CTRLPT" S PRCFLD=15 Q
  1. . I PRCSUB="COMMIT" S PRCFLD=20 Q
  1. . I PRCSUB="ACTDATA" S PRCFLD=28 Q
  1. . ;
  1. . ;ITEM (#410.02) multiple fields
  1. . I PRCSUB="ITLINE" S PRCFLD=.01 Q
  1. . I PRCSUB="ITDESC" S PRCFLD=1 Q
  1. . I PRCSUB="ITQTY" S PRCFLD=2 Q
  1. . I PRCSUB="ITUOP" S PRCFLD=3 Q
  1. . I PRCSUB="ITBOC" S PRCFLD=4 Q
  1. . I PRCSUB="ITCOST" S PRCFLD=7 Q
  1. ;
  1. Q PRCFLD