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

IBCE277S.m

Go to the documentation of this file.
  1. IBCE277S ;ALB/JRA - Create MailMan message from 277STAT data array
  1. ;;2.0;INTEGRATED BILLING;**650,665**;17-Jul-18;Build 28
  1. ;;Per VA Directive 6402, this routine should not be modified.
  1. Q
  1. ;
  1. POST(RESULT,ARG) ;Entry point to create MailMan message from ARG array
  1. ; Input: ARG
  1. N FLDNAM,FLDVAL,GLBO,MSGARY,BADCLM,BADLN,OCC
  1. S GLBO="^TMP(""IBCE277J"",$J,""OUT"")" K @GLBO
  1. ;;WCJ;IB*2.0*665;KILL THE KILL SWITCH
  1. ;;JWS;IB*2.0*650;STOP 277STAT FHIR PROCESSING (I.E. KILL SWITCH)
  1. ;;G QUIT
  1. ;S SUBJ="MCT"
  1. I $D(ARG)'>1 D Q
  1. . S @GLBO@("Status")="0^ARG parameter is missing or has bad format"
  1. . D ENCODE^XLFJSONE(GLBO,"RESULT") S RESULT(1)="["_RESULT(1)_"]"
  1. S FLDNAM="" F S FLDNAM=$O(ARG(FLDNAM)) Q:FLDNAM="" D
  1. . S OCC=+$P(FLDNAM,".",2)
  1. . D GETVAL(FLDNAM,OCC)
  1. I $D(MSGARY)'>1 D Q
  1. . S @GLBO@("Status")="0^ARG parameter has no usable data"
  1. . D ENCODE^XLFJSONE(GLBO,"RESULT") S RESULT(1)="["_RESULT(1)_"]"
  1. S BADCLM="",BADLN=0 D MAIL
  1. I BADCLM]"" D Q
  1. . S @GLBO@("Status")="0^"_$S(BADCLM="XX":"Missing",1:"Bad")_" claim number"_$S(BADCLM="XX":"",1:" '"_BADCLM_"'")
  1. . D ENCODE^XLFJSONE(GLBO,"RESULT") S RESULT(1)="["_RESULT(1)_"]"
  1. I BADLN D Q
  1. . S @GLBO@("Status")="0^Bad Line Type received in ARG parameter"
  1. . D ENCODE^XLFJSONE(GLBO,"RESULT") S RESULT(1)="["_RESULT(1)_"]"
  1. S @GLBO@("Status")="1^277STAT MailMan message created"
  1. D ENCODE^XLFJSONE(GLBO,"RESULT") S RESULT(1)="["_RESULT(1)_"]"
  1. K @GLBO
  1. Q
  1. ;
  1. GETVAL(FLDNAM,OCC) ;;Get the value associated with the field name
  1. Q:($G(FLDNAM)=""!(OCC=""))
  1. S FLDVAL=$G(ARG(FLDNAM))
  1. ;Translate any '^' to '~' since the lines of the mailman message contain pieces delimited by '^'
  1. F Q:FLDVAL'[U S FLDVAL=$P(FLDVAL,U)_"~"_$P(FLDVAL,U,2,999)
  1. ;I $$UP^XLFSTR(FLDNAM)["TESTLIVE" S SUBJ=$S($$UP^XLFSTR(FLDVAL)="LIVE":"MCH",1:"MCT") Q
  1. D MSGLINE($P(FLDNAM,"."),FLDVAL,OCC)
  1. Q
  1. ;
  1. MSGLINE(FLDNAM,FLDVAL,OCC) ;Add data to specified node in message array
  1. ;Each array node corresponds to a unique line in the MailMan message
  1. Q:$G(FLDNAM)=""
  1. N FLDDAT,FLDNUM,I,NODE
  1. F I=1:1 S FLDDAT=$P($T(MAPFLD+I),";;",2) Q:FLDDAT="" D
  1. . Q:$$UP^XLFSTR(FLDNAM)'=$$UP^XLFSTR($P(FLDDAT,U))
  1. . S FLDNUM=$P(FLDDAT,"_",2),NODE=$P(FLDDAT,U,2),NODE=OCC_NODE Q:(NODE=""!('FLDNUM))
  1. . S $P(MSGARY(NODE),U,FLDNUM)=FLDVAL
  1. Q
  1. ;
  1. CHKCLM(FLDVAL) ;;
  1. Q:$G(FLDVAL)="" 0
  1. N IBD,IBIFN
  1. S $P(IBD,U,2)=FLDVAL
  1. D STRTREC^IBCE277
  1. Q:'IBIFN 0
  1. Q 1
  1. ;
  1. MAIL ;Assemble 277STAT MailMan message and create/send
  1. N BILL,GOTLN,LN,MSG,NODE,XMTO,SUBJ
  1. S GOTLN=0
  1. ;S XMTO("G."_SUBJ)=""
  1. S XMTO("G.MCH")=""
  1. S LN=$$SETMSG("RACUBOTH RUCH") ;'RACUBOTH RUCH' text needed for conditional in ^IBCESRV
  1. S NODE="" F S NODE=$O(MSGARY(NODE)) Q:(NODE=""!(BADCLM]""!(BADLN))) D
  1. . I NODE["LN" D Q:BADLN!(BADCLM]"")
  1. . . I $P(MSGARY(NODE),U)'=$P(NODE,"LN",2) S BADLN=1 Q
  1. . . S BILL=$P(MSGARY(NODE),U,2) I '$$CHKCLM(BILL) S BADCLM=$S(BILL="":"XX",1:$$GETCLM^IBCE277(BILL))
  1. . I NODE["LN10" D PARSE(NODE,.LN) Q
  1. . S LN=$$SETMSG(MSGARY(NODE),LN)
  1. Q:BADCLM]""!(BADLN)
  1. S SUBJ="MCH 277STAT "_$S(BILL["-":$P(BILL,"-",2),1:BILL)
  1. S LN=$$SETMSG("99^$",LN),LN=$$SETMSG("NNNN",LN)
  1. D SENDMSG^XMXAPI(DUZ,SUBJ,"MSG",.XMTO)
  1. Q
  1. ;
  1. SETMSG(DATA,LN) ;Set a line of the MailMan Message and return next line number
  1. S:'$G(LN) LN=1
  1. S MSG(LN)=$G(DATA),LN=LN+1
  1. Q LN
  1. ;
  1. PARSE(NODE,LN) ;
  1. Q:($G(NODE)=""!('$G(LN)))
  1. N I,STATARY,STATMSG,STATLIM,TXT
  1. S STATLIM=200 ;Max characters for "Status Message" field on "10" line
  1. S STATMSG=$P(MSGARY(NODE),U,6)
  1. S TXT=MSGARY(NODE)
  1. I $L(STATMSG)'>STATLIM S LN=$$SETMSG(TXT,LN) Q
  1. D FSTRNG^IBJU1(STATMSG,STATLIM,.STATARY)
  1. F I=1:1:STATARY S $P(TXT,U,6)=STATARY(I),LN=$$SETMSG(TXT,LN)
  1. Q
  1. ;
  1. QUIT ; kill switch
  1. S @GLBO@("Status")="0^277STAT FHIR process turned off...i.e. Kill Switch"
  1. D ENCODE^XLFJSONE(GLBO,"RESULT") S RESULT(1)="["_RESULT(1)_"]"
  1. Q
  1. ;
  1. MAPFLD ;RPC_field_name (limit 45 char)^Array_node
  1. ;;HeaderData_1_ReturnMessageId^HDR
  1. ;;HeaderData_2_X12ProprietaryFlag^HDR
  1. ;;HeaderData_3_StatusDate^HDR
  1. ;;HeaderData_4_StatusTime^HDR
  1. ;;HeaderData_5_MRAStatus^HDR
  1. ;;HeaderData_6_TotalNumberClaimsSubmitted^HDR
  1. ;;HeaderData_7_TotalNumberClaimsRejected^HDR
  1. ;;HeaderData_8_TotalChargesSubmitted^HDR
  1. ;;HeaderData_9_TotalChargesRejected^HDR
  1. ;;HeaderData_10_PayerName^HDR
  1. ;;HeaderData_11_PayerId^HDR
  1. ;;HeaderData_12_PayerGenerated^HDR
  1. ;;HeaderData_13_Source^HDR
  1. ;;HeaderData_14_BatchReferenceNumber^HDR
  1. ;;MessageHeader_1_LineType^LN09
  1. ;;MessageHeader_2_BillNumber^LN09
  1. ;;MessageHeader_3_MessageNumber^LN09
  1. ;;MessageHeader_4_ErrorData^LN09
  1. ;;MessageHeader_5_ErrorField^LN09
  1. ;;MessageData_1_LineType^LN10
  1. ;;MessageData_2_BillNumber^LN10
  1. ;;MessageData_3_AcceptRejectCode^LN10
  1. ;;MessageData_4_WarnErrorInfoCode^LN10
  1. ;;MessageData_5_StatusCode^LN10
  1. ;;MessageData_6_StatusMessage^LN10
  1. ;;ClaimData_1_LineType^LN13
  1. ;;ClaimData_2_BillNumber^LN13
  1. ;;ClaimData_3_ClearinghouseTraceNumber^LN13
  1. ;;ClaimData_4_PayerStatusDate^LN13
  1. ;;ClaimData_5_PayerClaimNumber^LN13
  1. ;;ClaimData_6_SplitClaimIndicator^LN13
  1. ;;ClaimData_7_ClaimType^LN13
  1. ;;ClmSvcDtSubscrPatData_1_LineType^LN15
  1. ;;ClmSvcDtSubscrPatData_2_BillNumber^LN15
  1. ;;ClmSvcDtSubscrPatData_3_PatientLastName^LN15
  1. ;;ClmSvcDtSubscrPatData_4_PatientFirstName^LN15
  1. ;;ClmSvcDtSubscrPatData_5_PatientMiddleName^LN15
  1. ;;ClmSvcDtSubscrPatData_6_PatientIdNumber^LN15
  1. ;;ClmSvcDtSubscrPatData_7_SubscriberLastName^LN15
  1. ;;ClmSvcDtSubscrPatData_8_SubscriberFirstName^LN15
  1. ;;ClmSvcDtSubscrPatData_9_SubscriberMiddleName^LN15
  1. ;;ClmSvcDtSubscrPatData_10_SubscriberIdNumber^LN15
  1. ;;ClmSvcDtSubscrPatData_11_FirstServiceDate^LN15
  1. ;;ClmSvcDtSubscrPatData_12_LastServiceDate^LN15
  1. ;
  1. ;277STAT processing will error out if there is a line 20 and/or
  1. ; line 21 in the mailman message (see IBCESRV routine).
  1. ;;ServiceLineStatusData_1_LineType^LN20
  1. ;;ServiceLineStatusData_2_BillNumber^LN20
  1. ;;ServiceLineStatusData_3_AcceptRejectCode^LN20
  1. ;;ServiceLineStatusData_4_WarnErrorInfoCode^LN20
  1. ;;ServiceLineStatusData_5_StatusCode^LN20
  1. ;;ServiceLineStatusData_6_StatusMessage^LN20
  1. ;;ServiceLineStatusData_7_FreeTextMessage^LN20
  1. ;;ServiceLineStatusData_8_ServiceLineNumber^LN20
  1. ;;ServiceLineIdData_1_LineType^LN21
  1. ;;ServiceLineIdData_2_BillNumber^LN21
  1. ;;ServiceLineIdData_3_ServiceLineNumber^LN21
  1. ;;ServiceLineIdData_4_ServiceType^LN21
  1. ;;ServiceLineIdData_5_ServiceCode^LN21
  1. ;;ServiceLineIdData_6_Modifiers^LN21
  1. ;;ServiceLineIdData_7_UnitsOfService^LN21
  1. ;