[613] | 1 | PRCHAAC ;WIFO/CR-CREATE HL7 IFCAP MESSAGE FOR AUSTIN AUTOMATION CENTER ;2/22/05 10:50 AM
|
---|
| 2 | ;;5.1;IFCAP;**79**;Oct 20, 2000
|
---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified.
|
---|
| 4 | ; This routine will gather FPDS data for the new report requested
|
---|
| 5 | ; by the Austin Automation Center (AAC), create an HL7 message, and send
|
---|
| 6 | ; it to the Austin server via the VistA HL7 package.
|
---|
| 7 | ;
|
---|
| 8 | AAC ; Start FPDS report here: Options for Detailed PC orders, Delivery
|
---|
| 9 | ; orders, and regular purchase orders created by a Purchasing Agent.
|
---|
| 10 | ; The variable PRCHPO is defined by the calling routines.
|
---|
| 11 | ;
|
---|
| 12 | ; The following segments will be used in the outgoing HL7 message:
|
---|
| 13 | ; MSH,MFI,MFE,CDM,PRC,ZPO.
|
---|
| 14 | ; Message Type: MFN Event Type: M01.
|
---|
| 15 | ; The expected ACK from the AAC will consist of the following segments:
|
---|
| 16 | ; MSH,MSA,MFI,MFA.
|
---|
| 17 | ; Message Type: MFK Event Type: M01.
|
---|
| 18 | ;
|
---|
| 19 | ; Get procurement detail for the purchase order.
|
---|
| 20 | N PRCAAD,PRCAMT,PRCAT,PRCATP,PRCBT,PRCBZ,PRCCB,PRCCH,PRCCV,PRCDB,PRCDD,PRCDES,PRCDS,PRCDUZ,PRCEC,PRCECC,PRCEPA,PRCEPAC,PRCLEN,PRCMOP,PRCRN,PRCRNC,PRCSW,PRCVEN
|
---|
| 21 | N PRCAID,PRCAM,PRCCAD,PRCCN,PRCPF,PRCH2237,PRCIDV,PRCPIID,PRCFSC,PRCFSCI,PRCPER,PRCPP,PRCTC,PRCCFG,PRCGFE,PRCOD,PRCOFC,PRCSPEC,PRCPT,PRCROOT
|
---|
| 22 | N PRCEP,PRCEPC,PRCFAC,PRCFOC,PRCIEN,PRCLID,PRCMN,PRCMY,PRCNOF,PRCPAS,PRCPBC,PRCPD,PRCRM,PRCRMC,PRCRT,PRCSP,PRCSPC,PRCTSA,PRCTSAC,PRCUCD,PRCUV
|
---|
| 23 | ;
|
---|
| 24 | S U="^",PRCROOT=$P($G(^PRC(442,PRCHPO,0)),U,1),PRCROOT=$P(PRCROOT,"-")_$P(PRCROOT,"-",2)
|
---|
| 25 | ; Check PO for FPDS data
|
---|
| 26 | I '$D(^PRC(442,PRCHPO,25))!('$D(^PRC(442,PRCHPO,9,1,0))) D EN^DDIOL("This PO is not required for FPDS transmission.") Q
|
---|
| 27 | ;
|
---|
| 28 | S PRCMOP=$P(^PRC(442,PRCHPO,0),U,2)
|
---|
| 29 | S PRCMOP=$S(PRCMOP=25:"Y",1:"N") ; if a PC order, flag it with Y
|
---|
| 30 | ; Vendor pointer and name
|
---|
| 31 | S PRCPT=$P(^PRC(442,PRCHPO,1),U,1),PRCVEN=$P(^PRC(440,PRCPT,0),U,1)
|
---|
| 32 | ; If the vendor has '&' in its name, replace it with 'AND'
|
---|
| 33 | I PRCVEN["&" D
|
---|
| 34 | . S PRCSPEC("&")="AND"
|
---|
| 35 | . S PRCVEN=$$REPLACE^XLFSTR(PRCVEN,.PRCSPEC)
|
---|
| 36 | ;
|
---|
| 37 | S PRCDB=$P($G(^PRC(440,PRCPT,7)),U,12) ; DUN & BRADSTREET #
|
---|
| 38 | S PRCBT=$P(^PRC(440,PRCPT,2),U,3) ; business type (size)
|
---|
| 39 | ; Utimate Contract Value, Current Contract Value, and Dollars Obligated
|
---|
| 40 | ; will equal the total amount of PO below.
|
---|
| 41 | S PRCAMT=$P(^PRC(442,PRCHPO,0),U,15) ; total amount of PO
|
---|
| 42 | I $G(PRCAMT)=0 D EN^DDIOL("A PO worth $0 is not required for FPDS transmission.") Q
|
---|
| 43 | ; As requested by the AAC rep, get the line item with the larget $$ and
|
---|
| 44 | ; report its FSC, Contract # if there is one, and the first 50 chars of
|
---|
| 45 | ; its description. Report only the TOTAL AMOUNT of PO, not the largest
|
---|
| 46 | ; line item's amount.
|
---|
| 47 | ;
|
---|
| 48 | S PRCLID=$$LIDT^PRCHAAC3(PRCHPO) ; get line item detail
|
---|
| 49 | S PRCLEN=$P(PRCLID,U,3) ; line item description
|
---|
| 50 | ; Strip any space in front of the line item description
|
---|
| 51 | S PRCDES=$$TRIM^XLFSTR(PRCLEN,"L"," ")
|
---|
| 52 | ; Referenced Proc. Identifier (PIID) = contract number
|
---|
| 53 | S PRCCN=$P($G(PRCLID),U,5) ; contract number if available
|
---|
| 54 | S PRCFSCI=$P($G(PRCLID),U,6) ; internal FSC code or PSC code
|
---|
| 55 | S:$G(PRCFSCI)'="" PRCFSC=$P(^PRC(441.2,PRCFSCI,0),U,1) ; external FSC value
|
---|
| 56 | ;
|
---|
| 57 | ; Get the purchase order's date. This is the 'effective start date.'
|
---|
| 58 | I $D(^PRC(442,PRCHPO,1)) D ; all purchase orders
|
---|
| 59 | . S PRCOD=$P(^PRC(442,PRCHPO,1),U,15) ; purchase order date
|
---|
| 60 | . S PRCOD=$$FMTHL7^XLFDT(PRCOD) ; date in HL7 format
|
---|
| 61 | ;
|
---|
| 62 | ; Date signed: if the PO is a Detailed PC order, or a delivery order:
|
---|
| 63 | I $P(^PRC(442,PRCHPO,23),U,11)'="" D
|
---|
| 64 | . S PRCH2237=$P(^PRC(442,PRCHPO,13,0),U,3)
|
---|
| 65 | . S PRCDS=$P($P(^PRC(442,PRCHPO,13,PRCH2237,0),U,4),".",1)
|
---|
| 66 | . S PRCDS=$$FMTHL7^XLFDT(PRCDS) ; date signed (HL7 format)
|
---|
| 67 | ;
|
---|
| 68 | ; Date signed: if the Detailed PC order is from a Purchasing Agent:
|
---|
| 69 | I $P(^PRC(442,PRCHPO,0),U,2)=25,$P(^PRC(442,PRCHPO,23),U,11)="" D
|
---|
| 70 | . S PRCDS=$P($P(^PRC(442,PRCHPO,12),U,3),".",1) ; validation date/time
|
---|
| 71 | . S PRCDS=$$FMTHL7^XLFDT(PRCDS) ; date signed (HL7 format)
|
---|
| 72 | ;
|
---|
| 73 | ; Date signed: for any other PO:
|
---|
| 74 | I $D(^PRC(442,PRCHPO,10)) D
|
---|
| 75 | . S PRCDS=$P($P(^PRC(442,PRCHPO,10,1,0),U,6),".",1) ; date signed
|
---|
| 76 | . S PRCDS=$$FMTHL7^XLFDT(PRCDS) ; date signed (HL7 format)
|
---|
| 77 | ;
|
---|
| 78 | ; The delivery date is stored at the same node for all orders. This date
|
---|
| 79 | ; is the same as 'effective end date'.
|
---|
| 80 | S PRCDD=$P(^PRC(442,PRCHPO,0),U,10)
|
---|
| 81 | S PRCDD=$$FMTHL7^XLFDT(PRCDD) ; convert to HL7 format
|
---|
| 82 | ;
|
---|
| 83 | S PRCPD=$G(^PRC(442,PRCHPO,25)) ; po details new FPDS data node
|
---|
| 84 | S PRCEC=$P($G(PRCPD),U,12) ; extent competed pointer
|
---|
| 85 | S:$G(PRCEC)'="" PRCECC=$P(^PRCD(420.53,+PRCEC,0),U,1) ; extent competed code
|
---|
| 86 | S PRCRN=$P($G(PRCPD),U,1) ; reason not competed pointer
|
---|
| 87 | S:$G(PRCRN)'="" PRCRNC=$P(^PRCD(420.51,+PRCRN,0),U,1) ; reason not competed code
|
---|
| 88 | S PRCEPA=$P($G(PRCPD),U,10) ; EPA designated product pointer
|
---|
| 89 | S PRCEPAC=$P($G(^PRCD(420.55,+PRCEPA,0)),U,1) ; EPA code
|
---|
| 90 | S PRCPP=$P(PRCPD,U,15) ; place of perf. this station?
|
---|
| 91 | S PRCPF=$P(PRCPD,U,16) ; place of performance
|
---|
| 92 | S PRCCB=$P(PRCPD,U,11) ; contract bundling
|
---|
| 93 | S PRCDUZ=$P(^PRC(442,PRCHPO,1),U,10) ; pointer PA/PPM/Authorized Buyer
|
---|
| 94 | ; Contracting officer's name in format 'last_name^first_name'
|
---|
| 95 | S PRCPER=PRCDUZ_U_$P($P(^VA(200,PRCDUZ,0),U,1),",",1)_U_$P($P(^VA(200,PRCDUZ,0),U,1),",",2)
|
---|
| 96 | ;
|
---|
| 97 | ; By agreement with the requestor, the following will be hard-coded
|
---|
| 98 | ; values and will not be stored in IFCAP:
|
---|
| 99 | ; GFE (Government Furnished Eqmt) = 'N'
|
---|
| 100 | S PRCGFE="N"
|
---|
| 101 | ; Type of Contract = 'J'
|
---|
| 102 | S PRCTC="J"
|
---|
| 103 | ; Contract Funded by Foreign Gov. = 'N'
|
---|
| 104 | S PRCCFG="N"
|
---|
| 105 | ; Business Size = 'Small', 'Large', or 'Other'
|
---|
| 106 | S PRCBZ=$S(PRCBT=1:"SMALL",PRCBT=2:"LARGE",1:"OTHER")
|
---|
| 107 | ; Synopsis Waiver = 'N'
|
---|
| 108 | S PRCSW="N"
|
---|
| 109 | ; Agency Identifier = 3600
|
---|
| 110 | S PRCAID=3600
|
---|
| 111 | ; Contracting Agency Code = 3600
|
---|
| 112 | S PRCCAD=3600
|
---|
| 113 | ; Contracting Office Code = Station# preceeded by'00'
|
---|
| 114 | S PRCOFC="00"_$E(PRCROOT,1,3)
|
---|
| 115 | ; Fee paid for use of Indefinite Delivery Vehicle (IDV) = $0
|
---|
| 116 | S PRCIDV=0
|
---|
| 117 | ; Procurement identifier
|
---|
| 118 | S PRCPIID="V"_$E(PRCROOT,1,3) ; always "V"+Station Number
|
---|
| 119 | ; End of hard-coded values. The rest of values come from the PO
|
---|
| 120 | ;
|
---|
| 121 | ; By the HL7 Standard, the following will be defined:
|
---|
| 122 | ; Primary Key Value for segs MFE, CDM, and PRC: 'V'_Station#_PO Number.
|
---|
| 123 | ; Charge Description Short, CDM seg: 'PROCUREMENT DETAIL FROM IFCAP'.
|
---|
| 124 | ;
|
---|
| 125 | S PRCAAD=$P(PRCPD,U,4) ; alternative advertising
|
---|
| 126 | S PRCATP=$P(^PRC(442,PRCHPO,1),U,7) ; pointer for award type
|
---|
| 127 | S PRCAT=$P($G(^PRCD(420.8,+PRCATP,0)),U,1)
|
---|
| 128 | I "467B"[(PRCAT) S PRCAT="C" ; delivery orders (contracts)
|
---|
| 129 | I "25"[(PRCAT) S PRCAT="B" ; open market orders
|
---|
| 130 | ;
|
---|
| 131 | ; Get information for the record type
|
---|
| 132 | S PRCRT=+$P(^PRC(442,PRCHPO,7),U,2) ; supply status order
|
---|
| 133 | I PRCRT<20 D EN^DDIOL("This PO does not qualify for FPDS transmission") Q
|
---|
| 134 | S PRCIEN=0 F S PRCIEN=$O(^PRCD(442.3,PRCIEN)) Q:'PRCIEN D
|
---|
| 135 | . I $P(^PRCD(442.3,PRCIEN,0),U,2)=PRCRT D
|
---|
| 136 | .. I $P(^PRCD(442.3,PRCIEN,0),U,1)'["Amended" S PRCRT="A" ; award
|
---|
| 137 | .. I $P(^PRCD(442.3,PRCIEN,0),U,1)["Amended" S PRCRT="M" ; modification
|
---|
| 138 | .. I $P(^PRCD(442.3,PRCIEN,0),U,1)["Cancelled" S PRCRT="D" ; deletion (cancellation)
|
---|
| 139 | S PRCSP=$P(PRCPD,U,5) ; solicitation procedure pointer
|
---|
| 140 | S PRCSPC=$P($G(^PRCD(420.52,+PRCSP,0)),U,1) ; solicitation proc. code
|
---|
| 141 | S PRCEP=$P(PRCPD,U,6) ; evaluated preference pointer
|
---|
| 142 | S PRCEPC=$P($G(^PRCD(420.54,+PRCEP,0)),U,1) ; evaluated pref. code
|
---|
| 143 | S PRCFAC=$P(PRCPD,U,7) ; funding agency code
|
---|
| 144 | S PRCFOC=$P(PRCPD,U,8) ; funding agency office code
|
---|
| 145 | S PRCMY=$P(PRCPD,U,9) ; multiyear contract
|
---|
| 146 | S PRCPAS=$P(PRCPD,U,3) ; pre award synopsis
|
---|
| 147 | S PRCNOF=$P(PRCPD,U,2) ; number of offers
|
---|
| 148 | S PRCUV=PRCAMT ; ultimate contract value
|
---|
| 149 | S PRCCV=PRCAMT ; current contract value
|
---|
| 150 | S PRCTSA=$P(^PRC(442,PRCHPO,9,1,0),U,5) ; type set aside = pref. program
|
---|
| 151 | S PRCTSAC=$P(^PRCD(420.6,+PRCTSA,0),U,1) ; type set aside code
|
---|
| 152 | S PRCPBC=$P(PRCPD,U,13) ; perf. based service contract
|
---|
| 153 | S PRCCH=$P(PRCPD,U,14) ; Clinger Cohen Act
|
---|
| 154 | S PRCUCD=PRCDD ; ultimate completion date
|
---|
| 155 | ; See if we have an amended order - authority = reason for amendment
|
---|
| 156 | I $D(^PRC(442,PRCHPO,6,0)) S PRCAM=1 D
|
---|
| 157 | . S PRCMN=$P(^PRC(442,PRCHPO,6,0),U,3) ; last amendment = modification #
|
---|
| 158 | . S PRCRM=$P(^PRC(442,PRCHPO,6,+PRCMN,0),U,4) ; reason for mod. pointer
|
---|
| 159 | . S PRCRMC=$P(^PRCD(442.2,+PRCRM,0),U,1) ; reason mod. code desc.
|
---|
| 160 | . S PRCRMC=$S(PRCRMC="A":"D",PRCRMC="B":"M",PRCRMC="C":"B",PRCRMC="D":"D",PRCRMC="E":"N",1:"")
|
---|
| 161 | G ^PRCHAAC1
|
---|