IBCNRMFK ;DAOU/DMK - Send HL7 e-Pharmacy MFK Message ;23-OCT-2003
 ;;2.0;INTEGRATED BILLING;**251,550**;21-MAR-94;Build 25
 ;;Per VA Directive 6402, this routine should not be modified.
 ;
 ; Description
 ;
 ; Send HL7 e-Pharmacy MFK Message
 ; (Application Acknowledgement)
 ;
 ; Required segments listed in order
 ; MSH (Message Header Segment)
 ; MSA (Message Acknowledgement Segment)
 ; MFI (Master File Identifier Segment)
 ; MFA (Master File Acknowledgement)
 ;
 ; Called by IBCNRHLU if all of the following are true: 
 ; * File # (MFI Segment) = 366.01, 366.02, or 366.03
 ; * Segment ID (every segment) = MFE, ZCM, ZPB, ZPL, ZPP, or ZPT
 ;
 ; Entry point
 ;
1000 ; Control MFK Message processing
 ;
 ; Possible future use
 ; Quit if no error to report
 ;I '$D(DATAMFK("ERROR")) Q
 ;
 N ERROR,MESSAGE
 K HLA("HLA")
 ;
 D MSA
 D MFI
 D MFA
 ;
 D GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"LM",1,.ERROR)
 ;
 ; Error?
 I $D(ERROR) D ERROR
 ;
 K HLA("HLA")
 Q
 ;
ERROR ; Process error
 S MESSAGE(1)="Outgoing HL7 ePharmacy Application Acknowledgment Message error"
 S MESSAGE(2)=ERROR
 D MESSAGE
 Q
 ;
MESSAGE ; Send message
 Q
 ;
MFA ; Create MFA Segment
 N SEGMENT
 ;
 ; Segment ID
 S $P(SEGMENT,HLFS,1)="MFA"
 ;
 ; MFE-1 Record-Level Event Code (from MFN Message)
 ; MAC = Activate
 ; MAD = Add
 ; MDC = Deactivate
 ; MDL = Delete
 ; MUP = Update
 S $P(SEGMENT,HLFS,2)=DATAMFK("MFE-1")
 ;
 ; Record-Level Error Return (relative to MFN Message)
 ; Piece 1 = ID
 ; S = Saved
 ; P = Previous (not saved)
 ; U = Undefined (not saved)
 ; and
 ; Piece 2 = Error Code (optional - if error)
 ; Format = "V"NNN where N = number (e.g. V128)
 I '$D(DATAMFK("ERROR")) S $P(SEGMENT,HLFS,5)="S"
 I $D(DATAMFK("ERROR")) S $P(SEGMENT,HLFS,5)=$S(DATAMFK("IEN")=-1:"U",1:"P")_$E(HLECH,1)_DATAMFK("ERROR")
 ;
 ; MFE-4 Primary Key Value (from MFN Message)
 S $P(SEGMENT,HLFS,6)=DATAMFK("MFE-4")
 ;
 ; MFE-5 Primary Key Value Type (from MFN Message)
 S $P(SEGMENT,HLFS,7)=DATAMFK("MFE-5")
 ;
 S HLA("HLA",3)=SEGMENT
 Q
 ;
MFI ; Create MFI Segment
 N SEGMENT
 ;
 ; Segment ID
 S $P(SEGMENT,HLFS,1)="MFI"
 ;
 ; MFI-1 Master File Identifier (from MFN Message)
 S $P(SEGMENT,HLFS,2)=DATAMFK("MFI-1")
 ;
 ; MFI-3 File-Level Event Code (from MFN Message)
 S $P(SEGMENT,HLFS,4)=DATAMFK("MFI-3")
 ;
 ; Response-Level Code
 ; NE = Never (send response Application Acknowledgement Message)
 S $P(SEGMENT,HLFS,7)="NE"
 ;
 S HLA("HLA",2)=SEGMENT
 Q
 ;
MSA ; Create MSA Segment
 N SEGMENT
 ;
 ; Segment ID
 S $P(SEGMENT,HLFS,1)="MSA"
 ;
 ; Acknowledgment Code (relative to MFN Message)
 ; AA = application acknowledgement accept
 ; AR = application acknowledgement reject
 S $P(SEGMENT,HLFS,2)=$S($D(DATAMFK("ERROR")):"AR",1:"AA")
 ;
 ; MSH-10 Message Control ID (from MFN Message)
 S $P(SEGMENT,HLFS,3)=HL("MID")
 ;
 S HLA("HLA",1)=SEGMENT
 Q
 
--- Routine Detail   --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HIBCNRMFK   2937     printed  Sep 23, 2025@19:52:33                                                                                                                                                                                                    Page 2
IBCNRMFK  ;DAOU/DMK - Send HL7 e-Pharmacy MFK Message ;23-OCT-2003
 +1       ;;2.0;INTEGRATED BILLING;**251,550**;21-MAR-94;Build 25
 +2       ;;Per VA Directive 6402, this routine should not be modified.
 +3       ;
 +4       ; Description
 +5       ;
 +6       ; Send HL7 e-Pharmacy MFK Message
 +7       ; (Application Acknowledgement)
 +8       ;
 +9       ; Required segments listed in order
 +10      ; MSH (Message Header Segment)
 +11      ; MSA (Message Acknowledgement Segment)
 +12      ; MFI (Master File Identifier Segment)
 +13      ; MFA (Master File Acknowledgement)
 +14      ;
 +15      ; Called by IBCNRHLU if all of the following are true: 
 +16      ; * File # (MFI Segment) = 366.01, 366.02, or 366.03
 +17      ; * Segment ID (every segment) = MFE, ZCM, ZPB, ZPL, ZPP, or ZPT
 +18      ;
 +19      ; Entry point
 +20      ;
1000      ; Control MFK Message processing
 +1       ;
 +2       ; Possible future use
 +3       ; Quit if no error to report
 +4       ;I '$D(DATAMFK("ERROR")) Q
 +5       ;
 +6        NEW ERROR,MESSAGE
 +7        KILL HLA("HLA")
 +8       ;
 +9        DO MSA
 +10       DO MFI
 +11       DO MFA
 +12      ;
 +13       DO GENACK^HLMA1(HL("EID"),HLMTIENS,HL("EIDS"),"LM",1,.ERROR)
 +14      ;
 +15      ; Error?
 +16       IF $DATA(ERROR)
               DO ERROR
 +17      ;
 +18       KILL HLA("HLA")
 +19       QUIT 
 +20      ;
ERROR     ; Process error
 +1        SET MESSAGE(1)="Outgoing HL7 ePharmacy Application Acknowledgment Message error"
 +2        SET MESSAGE(2)=ERROR
 +3        DO MESSAGE
 +4        QUIT 
 +5       ;
MESSAGE   ; Send message
 +1        QUIT 
 +2       ;
MFA       ; Create MFA Segment
 +1        NEW SEGMENT
 +2       ;
 +3       ; Segment ID
 +4        SET $PIECE(SEGMENT,HLFS,1)="MFA"
 +5       ;
 +6       ; MFE-1 Record-Level Event Code (from MFN Message)
 +7       ; MAC = Activate
 +8       ; MAD = Add
 +9       ; MDC = Deactivate
 +10      ; MDL = Delete
 +11      ; MUP = Update
 +12       SET $PIECE(SEGMENT,HLFS,2)=DATAMFK("MFE-1")
 +13      ;
 +14      ; Record-Level Error Return (relative to MFN Message)
 +15      ; Piece 1 = ID
 +16      ; S = Saved
 +17      ; P = Previous (not saved)
 +18      ; U = Undefined (not saved)
 +19      ; and
 +20      ; Piece 2 = Error Code (optional - if error)
 +21      ; Format = "V"NNN where N = number (e.g. V128)
 +22       IF '$DATA(DATAMFK("ERROR"))
               SET $PIECE(SEGMENT,HLFS,5)="S"
 +23       IF $DATA(DATAMFK("ERROR"))
               SET $PIECE(SEGMENT,HLFS,5)=$SELECT(DATAMFK("IEN")=-1:"U",1:"P")_$EXTRACT(HLECH,1)_DATAMFK("ERROR")
 +24      ;
 +25      ; MFE-4 Primary Key Value (from MFN Message)
 +26       SET $PIECE(SEGMENT,HLFS,6)=DATAMFK("MFE-4")
 +27      ;
 +28      ; MFE-5 Primary Key Value Type (from MFN Message)
 +29       SET $PIECE(SEGMENT,HLFS,7)=DATAMFK("MFE-5")
 +30      ;
 +31       SET HLA("HLA",3)=SEGMENT
 +32       QUIT 
 +33      ;
MFI       ; Create MFI Segment
 +1        NEW SEGMENT
 +2       ;
 +3       ; Segment ID
 +4        SET $PIECE(SEGMENT,HLFS,1)="MFI"
 +5       ;
 +6       ; MFI-1 Master File Identifier (from MFN Message)
 +7        SET $PIECE(SEGMENT,HLFS,2)=DATAMFK("MFI-1")
 +8       ;
 +9       ; MFI-3 File-Level Event Code (from MFN Message)
 +10       SET $PIECE(SEGMENT,HLFS,4)=DATAMFK("MFI-3")
 +11      ;
 +12      ; Response-Level Code
 +13      ; NE = Never (send response Application Acknowledgement Message)
 +14       SET $PIECE(SEGMENT,HLFS,7)="NE"
 +15      ;
 +16       SET HLA("HLA",2)=SEGMENT
 +17       QUIT 
 +18      ;
MSA       ; Create MSA Segment
 +1        NEW SEGMENT
 +2       ;
 +3       ; Segment ID
 +4        SET $PIECE(SEGMENT,HLFS,1)="MSA"
 +5       ;
 +6       ; Acknowledgment Code (relative to MFN Message)
 +7       ; AA = application acknowledgement accept
 +8       ; AR = application acknowledgement reject
 +9        SET $PIECE(SEGMENT,HLFS,2)=$SELECT($DATA(DATAMFK("ERROR")):"AR",1:"AA")
 +10      ;
 +11      ; MSH-10 Message Control ID (from MFN Message)
 +12       SET $PIECE(SEGMENT,HLFS,3)=HL("MID")
 +13      ;
 +14       SET HLA("HLA",1)=SEGMENT
 +15       QUIT