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

ABSP5B1.m

Go to the documentation of this file.
  1. ABSP5B1 ; IHS/OIT/CASSevern/Pieran ran 1/19/2011 - Handling of outgoing NCPDP Billing "B1" and Reversal "B2" Claims for 5.1
  1. ;;1.0;PHARMACY POINT OF SALE;**42**;JUN 21, 2001;Build 38
  1. ;
  1. ; This routine will replace the ABSPOSCF for 5.1, so that we no
  1. ; longer need to use the formats file.
  1. ; This will go through and get the data for each and every segment and field
  1. ; format it and place it in the CLAIM file ^ABSPC(CLAIMIEN
  1. ; The ABSP() Array is already set up in: GETINFO^ABSPOSCC before we get here.
  1. ;INPUT = ACTION
  1. ; "CLAIMHD" = Set up only the claim header for creating ^ABSPC entry
  1. ; "CLAIMRST" = Set up Rest of Claim info and fill in ^ABSPC entry
  1. ; "OUTHD" = Create the actual Output HEADER Record
  1. ; "OUTRST" = Create the actual Output Rest of the Record.
  1. EN(ACTION,MEDN,IEN) ;EP
  1. N INSARRAY,DO,SPECIAL,SUPRESF
  1. S RECORD=$G(RECORD)
  1. I ACTION["CLAIM" D
  1. . S DO=ABSP("Insurer","IEN")_","
  1. ELSE D
  1. . S DO=IEN("9002313.4")_","
  1. D GETS^DIQ(9002313.4,DO,"100.15;100.16;100.17;200.01;210*;215*;220*","","INSARRAY")
  1. I $D(INSARRAY(9002313.42)) D SETSPEC
  1. I $D(INSARRAY(9002313.48)) D SETSUPRSG
  1. I $D(INSARRAY(9002313.46)) D SETSUPRF
  1. D CHECKOVER^ABSP5B1F(D0,.SPECIAL) ;Check for Manual Over-Rides for this Claim
  1. D CHKDUROVR^ABSP5B1F(D0,.SPECIAL) ;Don't forget the DUR over-rides
  1. D CHKDIAGOVR^ABSP5B1F(D0,.SPECIAL) ;Also need to double check the DIAG Codes
  1. I $D(SPECIAL) D ADDSEG^ABSP5B1F(.SPECIAL,.ADDSEG) ;Figure out based on Special fields which segments we need
  1. I (ACTION="CLAIMHD")!(ACTION="OUTHD") D
  1. . D HEADER ;Every time
  1. . D PATIENT ;Every time
  1. . D INSURANCE ;Every time
  1. I (ACTION="CLAIMRST")!(ACTION="OUTRST") D
  1. . I +$G(IEN(9002313.01))=0 S IEN(9002313.01)=1
  1. . D CLAIM^ABSP5B1A ;Every time
  1. . I $D(ADDSEG("PROVIDER")) D PROVIDER^ABSP5B1B ;Almost never (Currently 2 formats)
  1. . D PRESCRIBER^ABSP5B1B ;Pretty much every time
  1. . I $D(ADDSEG("COB")) D COB^ABSP5B1C ;Not Currently implemented
  1. . I $D(ADDSEG("WORKCOMP")) D WORKCOMP^ABSP5B1C ;Not Currently implemented
  1. . I $D(ADDSEG("DURRPPS")) D DURRPPS^ABSP5B1D ;Very common...but for over-rides only
  1. . D PRICING^ABSP5B1B ;Pretty much every time
  1. . I $D(ADDSEG("COUPON")) D COUPON^ABSP5B1D ;Not Currently implemented
  1. . I $D(ADDSEG("COMPOUND")) D COMPOUND^ABSP5B1D ;Not currently implemented
  1. . I $D(ADDSEG("PRIORAUTH")) D PRIORAUTH^ABSP5B1E ;Not Currently fully implemented
  1. . I $D(ADDSEG("CLINICAL")) D CLINICAL^ABSP5B1D ;Fairly rarely (Currently 57 formats for Over-ride only)
  1. Q
  1. ;Go through field by field and construct the Header
  1. ;The header is the one segment that is completely unchanged between version 5.1 and D.0
  1. ;The only difference is field 102 "VERSION" now says D0 instead of 51
  1. N FIELD
  1. F FIELD=101,102,103,104,109,202,201,401,110 D
  1. . Q:$D(SUPRESF(FIELD))
  1. . I (ACTION["CLAIM"),(FIELD'=111) D
  1. . . D @(FIELD_"GET")
  1. . . D @(FIELD_"FMT")
  1. . . D @(FIELD_"SET")
  1. . ELSE D @(FIELD_"APD")
  1. Q
  1. ;BIN #
  1. 101GET I '$D(SPECIAL(101)) S ABSP("X")=$G(INSARRAY(9002313.4,DO,100.16))
  1. ELSE X SPECIAL(101)
  1. Q
  1. 101FMT S ABSP("X")=$$NFF^ABSPECFM(ABSP("X"),6)
  1. Q
  1. 101SET S $P(^ABSPC(ABSP(9002313.02),100),U,1)=ABSP("X")
  1. Q
  1. 101APD S RECORD=$G(ABSP(9002313.02,MEDN,FIELD,"I"))
  1. Q
  1. ;VERSION (5.1, D.0) If we are calling this routine...it better be 5.1
  1. 102GET S ABSP("X")=$TR($G(INSARRAY(9002313.4,DO,100.15)),".","")
  1. Q
  1. 102FMT S ABSP("X")=$$ANFF^ABSPECFM(ABSP("X"),2)
  1. Q
  1. 102SET S $P(^ABSPC(ABSP(9002313.02),100),U,2)=ABSP("X")
  1. Q
  1. 102APD S RECORD=RECORD_$G(ABSP(9002313.02,MEDN,FIELD,"I"))
  1. Q
  1. ;TRANSACTION CODE "B1" for Billing
  1. 103GET S ABSP("X")="B1"
  1. Q
  1. 103FMT S ABSP("X")=$$ANFF^ABSPECFM(ABSP("X"),2)
  1. Q
  1. 103SET S $P(^ABSPC(ABSP(9002313.02),100),U,3)=ABSP("X")
  1. Q
  1. 103APD S RECORD=RECORD_$G(ABSP(9002313.02,MEDN,FIELD,"I"))
  1. Q
  1. ;PCN #
  1. 104GET I '$D(SPECIAL(104)) S ABSP("X")=$G(INSARRAY(9002313.4,DO,100.17))
  1. ELSE X SPECIAL(104)
  1. Q
  1. 104FMT S ABSP("X")=$$ANFF^ABSPECFM(ABSP("X"),10)
  1. Q
  1. 104SET S $P(^ABSPC(ABSP(9002313.02),100),U,4)=ABSP("X")
  1. Q
  1. 104APD S RECORD=RECORD_$G(ABSP(9002313.02,MEDN,FIELD,"I"))
  1. Q
  1. ;Transaction count
  1. 109GET I '$D(SPECIAL(109)) S ABSP("X")=$G(ABSP("Transaction Count"))
  1. ELSE X SPECIAL(109)
  1. Q
  1. 109FMT S ABSP("X")=$$ANFF^ABSPECFM(ABSP("X"),1)
  1. Q
  1. 109SET S $P(^ABSPC(ABSP(9002313.02),100),U,9)=ABSP("X")
  1. Q
  1. 109APD S RECORD=RECORD_$G(ABSP(9002313.02,MEDN,FIELD,"I"))
  1. Q
  1. ;Service provider ID
  1. 202GET I '$D(SPECIAL(202)) S ABSP("X")=$G(ABSP("Header","Service Prov ID Qual"))
  1. ELSE X SPECIAL(202)
  1. Q
  1. 202FMT S ABSP("X")=$$ANFF^ABSPECFM($G(ABSP("X")),2)
  1. Q
  1. 202SET S $P(^ABSPC(ABSP(9002313.02),200),U,2)=ABSP("X")
  1. Q
  1. 202APD S RECORD=RECORD_$G(ABSP(9002313.02,MEDN,FIELD,"I"))
  1. Q
  1. ;Pharmacy number
  1. 201GET I '$D(SPECIAL(201)) S ABSP("X")=$G(ABSP("Site","Pharmacy #"))
  1. ELSE X SPECIAL(201)
  1. Q
  1. 201FMT S ABSP("X")=$$ANFF^ABSPECFM(ABSP("X"),15)
  1. Q
  1. 201SET S $P(^ABSPC(ABSP(9002313.02),200),U,1)=ABSP("X")
  1. Q
  1. 201APD S RECORD=RECORD_$G(ABSP(9002313.02,MEDN,FIELD,"I"))
  1. Q
  1. ;Fill Date
  1. 401GET I '$D(SPECIAL(401)) S ABSP("X")=$G(ABSP("RX","Date Filled"))
  1. ELSE X SPECIAL(401) I $G(ABSP("X")) S ABSP("X")=ABSP("X")-17000000
  1. Q
  1. 401FMT S ABSP("X")=$$NFF^ABSPECFM($$DTF1^ABSPECFM(ABSP("X")),8)
  1. Q
  1. 401SET S $P(^ABSPC(ABSP(9002313.02),401),U,1)=ABSP("X")
  1. Q
  1. 401APD S RECORD=RECORD_$G(ABSP(9002313.02,MEDN,FIELD,"I"))
  1. Q
  1. ;Vendor ID
  1. 110GET I '$D(SPECIAL(110)) S ABSP("X")=$G(ABSP("Software Vendor"))
  1. ELSE X SPECIAL(110)
  1. Q
  1. 110FMT S ABSP("X")=$$ANFF^ABSPECFM($G(ABSP("X")),10)
  1. Q
  1. 110SET S $P(^ABSPC(ABSP(9002313.02),100),U,10)=ABSP("X")
  1. Q
  1. 110APD S RECORD=RECORD_$G(ABSP(9002313.02,MEDN,FIELD,"I"))
  1. Q
  1. INSURANCE ;INSURANCE Segment
  1. N FIELD
  1. S RECORD=$G(RECORD)
  1. F FIELD="111",302,312,313,314,524,309,301,303,306 D
  1. . Q:$D(SUPRESF(FIELD))
  1. . I (ACTION["CLAIM"),(FIELD'=111) D
  1. . . D @(FIELD_"GET")
  1. . . D @(FIELD_"FMT")
  1. . . D @(FIELD_"SET")
  1. . ELSE D APPEND(FIELD)
  1. Q
  1. ;Segment identifier
  1. 111GET S ABSP("X")="04"
  1. Q
  1. 111FMT S ABSP("X")=$$ANFF^ABSPECFM(ABSP("X"),2)
  1. Q
  1. 111SET ;This isn't used for the 111 Field
  1. Q
  1. ;Cardholder ID
  1. 302GET I '$D(SPECIAL(302)) S ABSP("X")=$G(ABSP("Insurer","Policy #"))
  1. ELSE X SPECIAL(302)
  1. Q
  1. 302FMT S:ABSP("X")'="" ABSP("X")="C2"_$$ANFF^ABSPECFM($G(ABSP("X")),20)
  1. Q
  1. 302SET S $P(^ABSPC(ABSP(9002313.02),300),U,2)=ABSP("X")
  1. Q
  1. ;Cardholder First Name
  1. 312GET I '$D(SPECIAL(312)) D
  1. . S ABSP("X")=","_$G(ABSP("Cardholder","First Name"))
  1. . S:","[ABSP("X") ABSP("X")=$G(ABSP("Cardholder","Name"))
  1. . S ABSP("X")=$P($P(ABSP("X"),",",2)," ")
  1. ELSE X SPECIAL(312)
  1. Q
  1. 312FMT S:ABSP("X")'="" ABSP("X")="CC"_$$ANFF^ABSPECFM(ABSP("X"),$L(ABSP("X"))) ;Spec says length is 12?
  1. Q
  1. 312SET S $P(^ABSPC(ABSP(9002313.02),300),U,12)=ABSP("X")
  1. Q
  1. ;Cardholder Last Name
  1. 313GET I '$D(SPECIAL(313)) D
  1. . S ABSP("X")=$G(ABSP("Cardholder","Last Name"))
  1. . S:ABSP("X")="" ABSP("X")=$G(ABSP("Cardholder","Name"))
  1. . S ABSP("X")=$P(ABSP("X"),",")
  1. . S:$L(ABSP("X"))>15 ABSP("X")=$E(ABSP("X"),1,15)
  1. ELSE X SPECIAL(313)
  1. Q
  1. 313FMT S:ABSP("X")'="" ABSP("X")="CD"_$$ANFF^ABSPECFM(ABSP("X"),$L(ABSP("X"))) ;Spec says length is 15?
  1. Q
  1. 313SET S $P(^ABSPC(ABSP(9002313.02),300),U,13)=ABSP("X")
  1. Q
  1. ;Home Plan
  1. 314GET I '$D(SPECIAL(314)) S ABSP("X")=$G(ABSP("Home Plan"))
  1. ELSE X SPECIAL(314)
  1. Q
  1. 314FMT S:ABSP("X")'="" ABSP("X")="CE"_$$ANFF^ABSPECFM(ABSP("X"),3)
  1. Q
  1. 314SET S $P(^ABSPC(ABSP(9002313.02),300),U,14)=ABSP("X")
  1. Q
  1. ;Plan ID
  1. 524GET I '$D(SPECIAL(524)) S ABSP("X")=$G(ABSP("Insurer","Plan ID"))
  1. ELSE X SPECIAL(524)
  1. Q
  1. 524FMT S:ABSP("X")'="" ABSP("X")="FO"_$$ANFF^ABSPECFM(ABSP("X"),8)
  1. Q
  1. 524SET S $P(^ABSPC(ABSP(9002313.02),520),U,4)=ABSP("X")
  1. Q
  1. ;Eligibility Clarification Code
  1. 309GET I '$D(SPECIAL(309)) S ABSP("X")=$G(ABSP("Eligibility Clarification Code"))
  1. ELSE X SPECIAL(309)
  1. Q
  1. 309FMT S:ABSP("X")'="" ABSP("X")="C9"_$$NFF^ABSPECFM($G(ABSP("X")),1)
  1. Q
  1. 309SET S $P(^ABSPC(ABSP(9002313.02),300),U,9)=ABSP("X")
  1. Q
  1. ;Group ID
  1. 301GET I '$D(SPECIAL(301)) S ABSP("X")=$G(ABSP("Insurer","Group #"))
  1. ELSE X SPECIAL(301)
  1. Q
  1. 301FMT S:ABSP("X")'="" ABSP("X")="C1"_$$ANFF^ABSPECFM(ABSP("X"),15)
  1. Q
  1. 301SET S $P(^ABSPC(ABSP(9002313.02),300),U,1)=ABSP("X")
  1. Q
  1. ;Person Code
  1. 303GET I '$D(SPECIAL(303)) S ABSP("X")=$G(ABSP("Insurer","Person Code"))
  1. ELSE X SPECIAL(303)
  1. Q
  1. 303FMT S:ABSP("X")'="" ABSP("X")="C3"_$$ANFF^ABSPECFM(ABSP("X"),3)
  1. Q
  1. 303SET S $P(^ABSPC(ABSP(9002313.02),300),U,3)=ABSP("X")
  1. Q
  1. ;Patient Relationship Code
  1. 306GET I '$D(SPECIAL(306)) S ABSP("X")=$G(ABSP("Insurer","Relationship"))
  1. ELSE X SPECIAL(306)
  1. Q
  1. 306FMT S:ABSP("X")'="" ABSP("X")="C6"_$$NFF^ABSPECFM($G(ABSP("X")),1)
  1. Q
  1. 306SET S $P(^ABSPC(ABSP(9002313.02),300),U,6)=ABSP("X")
  1. Q
  1. PATIENT ;PATIENT Segment
  1. N FIELD
  1. S RECORD=$G(RECORD)
  1. F FIELD="111A",331,332,304,305,310,311,322,323,324,325,326,307,333,334,335 D
  1. . Q:$D(SUPRESF(FIELD))
  1. . I (ACTION["CLAIM"),(FIELD'=111) D
  1. . . D @(FIELD_"GET")
  1. . . D @(FIELD_"FMT")
  1. . . D @(FIELD_"SET")
  1. . ELSE D APPEND(FIELD)
  1. Q
  1. ;Segment identifier
  1. 111AGET S ABSP("X")="01"
  1. Q
  1. 111AFMT S ABSP("X")=$$ANFF^ABSPECFM(ABSP("X"),2)
  1. Q
  1. 111ASET ;This isn't used for the 111 Field
  1. Q
  1. ;Patient ID Qualifier
  1. 331GET I '$D(SPECIAL(331)) S ABSP("X")=$G(ABSP("Patient","ID Qualifier"))
  1. ELSE X SPECIAL(331)
  1. Q
  1. 331FMT S:ABSP("X")'="" ABSP("X")="CX"_$$ANFF^ABSPECFM(ABSP("X"),2)
  1. Q
  1. 331SET S $P(^ABSPC(ABSP(9002313.02),330),U,1)=ABSP("X")
  1. Q
  1. ;Patient ID
  1. 332GET I '$D(SPECIAL(332)) S ABSP("X")=$G(ABSP("Patient","ID"))
  1. ELSE X SPECIAL(332)
  1. Q
  1. 332FMT S:ABSP("X")'="" ABSP("X")="CY"_$$ANFF^ABSPECFM($G(ABSP("X")),20)
  1. Q
  1. 332SET S $P(^ABSPC(ABSP(9002313.02),330),U,2)=ABSP("X")
  1. Q
  1. ;Date of Birth
  1. 304GET I '$D(SPECIAL(304)) D
  1. . S ABSP("X")=$G(ABSP("Patient","DOB"))
  1. . S ABSP("X")=$$DTF1^ABSPECFM(ABSP("X"))
  1. ELSE X SPECIAL(304)
  1. Q
  1. 304FMT S:ABSP("X")'="" ABSP("X")="C4"_$$NFF^ABSPECFM($G(ABSP("X")),8)
  1. Q
  1. 304SET S $P(^ABSPC(ABSP(9002313.02),300),U,4)=ABSP("X")
  1. Q
  1. ;Patient Gender code
  1. 305GET I '$D(SPECIAL(305)) D
  1. . S ABSP("X")=$G(ABSP("Patient","Sex"))
  1. . S ABSP("X")=$E(ABSP("X"),1,1)
  1. . S ABSP("X")=$S(ABSP("X")="M":"1",ABSP("X")="F":"2",1:"0")
  1. ELSE X SPECIAL(305)
  1. Q
  1. 305FMT S:ABSP("X")'="" ABSP("X")="C5"_$$NFF^ABSPECFM(ABSP("X"),1)
  1. Q
  1. 305SET S $P(^ABSPC(ABSP(9002313.02),300),U,5)=ABSP("X")
  1. Q
  1. ;Patient First Name
  1. 310GET I '$D(SPECIAL(310)) D
  1. . S ABSP("X")=","_$G(ABSP("Patient","First Name"))
  1. . I ","[ABSP("X") S ABSP("X")=$G(ABSP("Patient","Name"))
  1. . S ABSP("X")=$P($P(ABSP("X"),",",2)," ")
  1. ELSE X SPECIAL(310)
  1. Q
  1. 310FMT S:ABSP("X")'="" ABSP("X")="CA"_$$ANFF^ABSPECFM($G(ABSP("X")),12)
  1. Q
  1. 310SET S $P(^ABSPC(ABSP(9002313.02),300),U,10)=ABSP("X")
  1. Q
  1. ;Patient Last Name
  1. 311GET I '$D(SPECIAL(311)) D
  1. . S ABSP("X")=$G(ABSP("Patient","Last Name"))
  1. . I ABSP("X")="" S ABSP("X")=$G(ABSP("Patient","Name"))
  1. . S ABSP("X")=$P(ABSP("X"),",")
  1. ELSE X SPECIAL(311)
  1. Q
  1. 311FMT S:ABSP("X")'="" ABSP("X")="CB"_$$ANFF^ABSPECFM($G(ABSP("X")),15)
  1. Q
  1. 311SET S $P(^ABSPC(ABSP(9002313.02),300),U,11)=ABSP("X")
  1. Q
  1. ;Patient Street Address
  1. 322GET I '$D(SPECIAL(322)) S ABSP("X")=$G(ABSP("Patient","Street Address"))
  1. ELSE X SPECIAL(322)
  1. Q
  1. 322FMT S:ABSP("X")'="" ABSP("X")="CM"_$$ANFF^ABSPECFM(ABSP("X"),30)
  1. Q
  1. 322SET S $P(^ABSPC(ABSP(9002313.02),321),U,2)=ABSP("X")
  1. Q
  1. ;Patient City Address
  1. 323GET I '$D(SPECIAL(323)) S ABSP("X")=$G(ABSP("Patient","City"))
  1. ELSE X SPECIAL(323)
  1. Q
  1. 323FMT S:ABSP("X")'="" ABSP("X")="CN"_$$ANFF^ABSPECFM(ABSP("X"),20)
  1. Q
  1. 323SET S $P(^ABSPC(ABSP(9002313.02),321),U,3)=ABSP("X")
  1. Q
  1. ;Patient State/Province Address
  1. 324GET I '$D(SPECIAL(324)) S ABSP("X")=$G(ABSP("Patient","State"))
  1. ELSE X SPECIAL(324)
  1. Q
  1. 324FMT S:ABSP("X")'="" ABSP("X")="CO"_$$ANFF^ABSPECFM(ABSP("X"),2)
  1. Q
  1. 324SET S $P(^ABSPC(ABSP(9002313.02),321),U,4)=ABSP("X")
  1. Q
  1. ;Patient ZIP
  1. 325GET I '$D(SPECIAL(325)) D
  1. . S ABSP("X")=$G(ABSP("Patient","Zip"))
  1. . S ABSP("X")=$TR(ABSP("X"),"-/._","")
  1. ELSE X SPECIAL(325)
  1. Q
  1. 325FMT S:ABSP("X")'="" ABSP("X")="CP"_$$ANFF^ABSPECFM(ABSP("X"),15)
  1. Q
  1. 325SET S $P(^ABSPC(ABSP(9002313.02),321),U,5)=ABSP("X")
  1. Q
  1. ;Patient Phone Number
  1. 326GET I '$D(SPECIAL(326)) S ABSP("X")=$G(ABSP("Patient","Phone"))
  1. ELSE X SPECIAL(326)
  1. Q
  1. 326FMT S:ABSP("X")'="" ABSP("X")="CQ"_$$NFF^ABSPECFM(ABSP("X"),10)
  1. Q
  1. 326SET S $P(^ABSPC(ABSP(9002313.02),321),U,6)=ABSP("X")
  1. Q
  1. ;Patient Location
  1. 307GET I '$D(SPECIAL(307)) S ABSP("X")=$G(ABSP("Customer Location"))
  1. ELSE X SPECIAL(307)
  1. Q
  1. 307FMT S:ABSP("X")'="" ABSP("X")="C7"_$$NFF^ABSPECFM($G(ABSP("X")),2)
  1. Q
  1. 307SET S $P(^ABSPC(ABSP(9002313.02),300),U,7)=ABSP("X")
  1. Q
  1. ;Employer ID
  1. 333GET I '$D(SPECIAL(333)) S ABSP("X")=$G(ABSP("Employer","ID"))
  1. ELSE X SPECIAL(333)
  1. Q
  1. 333FMT S:ABSP("X")'="" ABSP("X")="CZ"_$$ANFF^ABSPECFM(ABSP("X"),15)
  1. Q
  1. 333SET S $P(^ABSPC(ABSP(9002313.02),330),U,3)=ABSP("X")
  1. Q
  1. ;Smoker/Non Smoker
  1. 334GET I '$D(SPECIAL(334)) S ABSP("X")=$G(ABSP("Patient","Smoker"))
  1. ELSE X SPECIAL(334)
  1. Q
  1. 334FMT S:ABSP("X")'="" ABSP("X")="1C"_$$ANFF^ABSPECFM(ABSP("X"),1)
  1. Q
  1. 334SET S $P(^ABSPC(ABSP(9002313.02),330),U,4)=ABSP("X")
  1. Q
  1. ;Pregnancy Indicator
  1. 335GET I '$D(SPECIAL(335)) S ABSP("X")=$G(ABSP("Patient","Pregnant"))
  1. ELSE X SPECIAL(335)
  1. Q
  1. 335FMT S:ABSP("X")'="" ABSP("X")="2C"_$$ANFF^ABSPECFM(ABSP("X"),1)
  1. Q
  1. 335SET S $P(^ABSPC(ABSP(9002313.02),330),U,5)=ABSP("X")
  1. Q
  1. SETSPEC ;SET UP SPECIAL CODE ARRAY HERE
  1. N D1,NCODE,MUMPS
  1. S D1=""
  1. F S D1=$O(INSARRAY(9002313.42,D1)) Q:D1="" D
  1. . S NCODE=$G(INSARRAY(9002313.42,D1,.01))
  1. . S MUMPS=$G(INSARRAY(9002313.42,D1,.02))
  1. . S:MUMPS["ABSP(""X"")" MUMPS=$TR(MUMPS,"|","^") ;If we stripped out caret (^) during conversion....put back in here
  1. . I MUMPS'["ABSP(""X"")" S MUMPS="S ABSP(""X"")="""_MUMPS_""""
  1. . S SPECIAL(NCODE)=MUMPS
  1. Q
  1. SETSUPRSG ;SET UP SUPPRESS SEGMENT ARRAY HERE
  1. N D1,SCODE
  1. S D1=""
  1. F S D1=$O(INSARRAY(9002313.48,D1)) Q:D1="" D
  1. . S SCODE=$G(INSARRAY(9002313.48,D1,.01))
  1. . S SUPRESSG(SCODE)=""
  1. Q
  1. SETSUPRF ;SET UP SUPPRESS FIELD CODE ARRAY HERE
  1. N D1,SCODE
  1. S D1=""
  1. F S D1=$O(INSARRAY(9002313.46,D1)) Q:D1="" D
  1. . S SCODE=$G(INSARRAY(9002313.46,D1,.01))
  1. . S SUPRESF(SCODE)=""
  1. Q
  1. APPEND(FIELD) ;This is where record is built for outgoing stream
  1. I FIELD["111" D
  1. . D @(FIELD_"GET")
  1. . D @(FIELD_"FMT")
  1. . S RECORD=RECORD_$C(30,28)_"AM"_ABSP("X")
  1. ELSE D
  1. . I $G(ABSP(9002313.02,MEDN,FIELD,"I"))'="" S RECORD=RECORD_$C(28)_$G(ABSP(9002313.02,MEDN,FIELD,"I"))
  1. . ELSE I $D(SPECIAL(FIELD)) D
  1. . . X SPECIAL(FIELD)
  1. . . D @(FIELD_"FMT")
  1. . . S RECORD=RECORD_$C(28)_ABSP("X")
  1. Q