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

ABSPDB1D.m

Go to the documentation of this file.
  1. ABSPDB1D ; IHS/OIT/CASSevern/Pieran ran 1/19/2011 - Handling of outgoing NCPDP Billing "B1" Claims for D.0 (DURR,CLINICAL,COMPOUND, and COUPON segments)
  1. ;;1.0;PHARMACY POINT OF SALE;**42,49**;JUN 21, 2001;Build 38
  1. DURRPPS ;EP CALLED FROM ABSPDB1 to set up DURR/PPS SEGMENT
  1. Q:$D(SUPRESSG("DURR/PPS"))
  1. N RECCNT,DUR
  1. I ACTION["CLAIM" D
  1. . Q:'$D(ABSP("RX",MEDN,"DUR"))
  1. . S (RECCNT,DUR)=0
  1. . F S DUR=$O(ABSP("RX",MEDN,"DUR",DUR)) Q:DUR="" D
  1. . . S RECCNT=RECCNT+1
  1. . . N FIELD
  1. . . S RECORD=$G(RECORD)
  1. . . F FIELD="111",473,439,440,441,474,475,476 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. . S ^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),473.01,0)="^9002313.1001A^"_RECCNT_"^"_RECCNT
  1. ELSE D
  1. . D DURVALUE^ABSPECA1
  1. . Q:'$D(ABSP(9002313.1001))
  1. . D APPEND(111) ;Only field on segment that is not repeating
  1. . S DUR=0
  1. . F S DUR=$O(ABSP(9002313.1001,DUR)) Q:DUR="" D
  1. . . F FIELD=.01,439,440,441,474,475,476 D
  1. . . . Q:$D(SUPRESF(FIELD))
  1. . . . S ABSP("X")=$G(ABSP(9002313.1001,DUR,FIELD,"I"))
  1. . . . S:ABSP("X")'="" RECORD=RECORD_$C(28)_ABSP("X")
  1. Q
  1. ;Segment identifier
  1. 111GET S ABSP("X")="08"
  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. ;DUR/PPS Code Counter
  1. 473GET I '$D(SPECIAL(473,DUR)) S ABSP("X")=$G(ABSP("RX",MEDN,"DUR",DUR,473))
  1. ELSE X SPECIAL(473,DUR)
  1. Q
  1. 473FMT S:ABSP("X")'="" ABSP("X")="7E"_$$ANFF^ABSPECFM($G(ABSP("X")),1)
  1. Q
  1. 473SET D FLD473^ABSPOSSG
  1. Q
  1. ;Reason for Service Code
  1. 439GET I '$D(SPECIAL(439,DUR)) S ABSP("X")=$G(ABSP("RX",MEDN,"DUR",DUR,439))
  1. ELSE X SPECIAL(439,DUR)
  1. Q
  1. 439FMT S:ABSP("X")'="" ABSP("X")="E4"_$$ANFF^ABSPECFM($G(ABSP("X")),2)
  1. Q
  1. 439SET D FLD439^ABSPOSSG
  1. Q
  1. ;Professional Service Code
  1. 440GET I '$D(SPECIAL(440,DUR)) S ABSP("X")=$G(ABSP("RX",MEDN,"DUR",DUR,440))
  1. ELSE X SPECIAL(440,DUR)
  1. Q
  1. 440FMT S:ABSP("X")'="" ABSP("X")="E5"_$$ANFF^ABSPECFM($G(ABSP("X")),2)
  1. Q
  1. 440SET D FLD440^ABSPOSSG
  1. Q
  1. ;Result of Service Coce
  1. 441GET I '$D(SPECIAL(441,DUR)) S ABSP("X")=$G(ABSP("RX",MEDN,"DUR",DUR,441))
  1. ELSE X SPECIAL(441,DUR)
  1. Q
  1. 441FMT S:ABSP("X")'="" ABSP("X")="E6"_$$ANFF^ABSPECFM($G(ABSP("X")),2)
  1. Q
  1. 441SET D FLD441^ABSPOSSG
  1. Q
  1. ;DUR/PPS Level of Effort
  1. 474GET I '$D(SPECIAL(474,DUR)) S ABSP("X")=$G(ABSP("RX",MEDN,"DUR",DUR,474))
  1. ELSE X SPECIAL(474,DUR)
  1. Q
  1. 474FMT S:ABSP("X")'="" ABSP("X")="8E"_$$ANFF^ABSPECFM($G(ABSP("X")),2)
  1. Q
  1. 474SET D FLD474^ABSPOSSG
  1. Q
  1. ;DUR Co-Agent ID Qualifier
  1. 475GET I '$D(SPECIAL(475,DUR)) S ABSP("X")=$G(ABSP("RX",MEDN,"DUR",DUR,475))
  1. ELSE X SPECIAL(475,DUR)
  1. Q
  1. 475FMT S:ABSP("X")'="" ABSP("X")="J9"_$$ANFF^ABSPECFM($G(ABSP("X")),2)
  1. Q
  1. 475SET D FLD475^ABSPOSSG
  1. Q
  1. ;DUR CO-Agent ID
  1. 476GET I '$D(SPECIAL(476,DUR)) S ABSP("X")=$G(ABSP("RX",MEDN,"DUR",DUR,476))
  1. ELSE X SPECIAL(476,DUR)
  1. Q
  1. 476FMT S:ABSP("X")'="" ABSP("X")="H6"_$$ANFF^ABSPECFM($G(ABSP("X")),19)
  1. Q
  1. 476SET D FLD476^ABSPOSSG
  1. Q
  1. COUPON ;EP CALLED FROM ABSPDB1 to set up COUPON SEGMENT
  1. Q:$D(SUPRESSG("Coupon"))
  1. N FIELD
  1. S RECORD=$G(RECORD)
  1. F FIELD="111A",485,486,487 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")="09"
  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. ;Coupon Type
  1. 485GET I '$D(SPECIAL(485)) S ABSP("X")=""
  1. ELSE X SPECIAL(485)
  1. Q
  1. 485FMT S:ABSP("X")'="" ABSP("X")="KE"_$$ANFF^ABSPECFM($G(ABSP("X")),2)
  1. Q
  1. 485SET ;Not Yet Implemented
  1. Q
  1. ;Coupon Number
  1. 486GET I '$D(SPECIAL(486)) S ABSP("X")=""
  1. ELSE X SPECIAL(486)
  1. Q
  1. 486FMT S:ABSP("X")'="" ABSP("X")="ME"_$$ANFF^ABSPECFM($G(ABSP("X")),15)
  1. Q
  1. 486SET ;Not Yet Implemented
  1. Q
  1. ;Coupon Value Amount
  1. 487GET I '$D(SPECIAL(487)) S ABSP("X")=""
  1. ELSE X SPECIAL(487)
  1. Q
  1. 487FMT S:ABSP("X")'="" ABSP("X")="NE"_$$ANFF^ABSPECFM($G(ABSP("X")),6)
  1. Q
  1. 487SET ;Not Yet Implemented
  1. Q
  1. COMPOUND ;EP CALLED FROM ABSPDB1 to set up COMPOUND SEGMENT
  1. Q:$D(SUPRESSG("Compound"))
  1. N FIELD
  1. S RECORD=$G(RECORD)
  1. F FIELD="111B",450,451,447,488,489,448,449,490,362,363 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. 111BGET S ABSP("X")=10
  1. Q
  1. 111BFMT S ABSP("X")=$$ANFF^ABSPECFM(ABSP("X"),2)
  1. Q
  1. 111BSET ;This isn't used for the 111 Field
  1. Q
  1. ;Compound Dosage Form Description Code
  1. 450GET I '$D(SPECIAL(450)) S ABSP("X")=$G(ABSP("Compound",ABSP(9002313.0201),"Dosage Form Desc"))
  1. ELSE X SPECIAL(450)
  1. Q
  1. 450FMT S:ABSP("X")'="" ABSP("X")="EF"_$$ANFF^ABSPECFM(ABSP("X"),2)
  1. Q
  1. 450SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),440),U,10)=ABSP("X")
  1. Q
  1. ;Compound Dispensing Unit Form Indicator
  1. 451GET I '$D(SPECIAL(451)) S ABSP("X")=$G(ABSP("Compound",ABSP(9002313.0201),"Disp Unit Form"))
  1. ELSE X SPECIAL(451)
  1. Q
  1. 451FMT S:ABSP("X")'="" ABSP("X")="EG"_$$NFF^ABSPECFM(ABSP("X"),1)
  1. Q
  1. 451SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),450),U,1)=ABSP("X")
  1. Q
  1. ;Compound Ingredient Compound Count
  1. 447GET I '$D(SPECIAL(447)) S ABSP("X")=$G(ABSP("Compound",ABSP(9002313.0201),"Ingred Component Cnt"))
  1. ELSE X SPECIAL(447)
  1. Q
  1. 447FMT S:ABSP("X")'="" ABSP("X")="EC"_$$NFF^ABSPECFM(ABSP("X"),2)
  1. Q
  1. 447SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),440),U,7)=ABSP("X")
  1. Q
  1. ;Compound Product ID Qualifier
  1. 488GET I '$D(SPECIAL(488)) S ABSP("X")=$G(ABSP("Compound","Product ID Qualifier"))
  1. ELSE X SPECIAL(488)
  1. Q
  1. 488FMT S:ABSP("X")'="" ABSP("X")="RE"_$$ANFF^ABSPECFM(ABSP("X"),2)
  1. Q
  1. 488SET ;Not Yet Implemented
  1. Q
  1. ;Compound Product ID
  1. 489GET I '$D(SPECIAL(489)) S ABSP("X")=$G(ABSP("Compound","Product ID"))
  1. ELSE X SPECIAL(489)
  1. Q
  1. 489FMT S:ABSP("X")'="" ABSP("X")="TE"_$$ANFF^ABSPECFM(ABSP("X"),19)
  1. Q
  1. 489SET ;Not Yet Implemented
  1. Q
  1. ;Compound Ingredient Quantity
  1. 448GET I '$D(SPECIAL(448)) S ABSP("X")=$G(ABSP("Coupound","Ingredient Quantity"))
  1. ELSE X SPECIAL(448)
  1. Q
  1. 448FMT S:ABSP("X")'="" ABSP("X")="ED"_$$DFF^ABSPECFM(ABSP("X"),10) ;Spec Says Length is 7?
  1. Q
  1. 448SET ;Not Yet Implemented
  1. Q
  1. ;Compound Ingredient Drug Cost
  1. 449GET I '$D(SPECIAL(449)) S ABSP("X")=$G(ABSP("Compound","Ingredient Drug Cost"))
  1. ELSE X SPECIAL(449)
  1. Q
  1. 449FMT S:ABSP("X")'="" ABSP("X")="EE"_$$DFF^ABSPEFCM(ABSP("X"),8) ;Spec says length is 6?
  1. Q
  1. 449SET ;Not Yet Implemented
  1. Q
  1. ;Compound Ingredient Basis of Cost Determination
  1. 490GET I '$D(SPECIAL(490)) S ABSP("X")=$G(ABSP("Compound","Ingred Basis of Cost"))
  1. ELSE X SPECIAL(490)
  1. Q
  1. 490FMT S:ABSP("X")'="" ABSP("X")="UE"_$$ANFF^ABSPECFM(ABSP("X"),2)
  1. Q
  1. 490SET ;Not Yet Implemented
  1. Q
  1. ;Compound Ingredient Modifier Code Count
  1. 362GET I '$D(SPECIAL(362)) S ABSP("X")=""
  1. ELSE X SPECIAL(362)
  1. Q
  1. 362FMT S:ABSP("X")'="" ABSP("X")="2G"_$$ANFF^ABSPECFM($G(ABSP("X")),2)
  1. Q
  1. 362SET ;Not Yet Implemented
  1. Q
  1. ;Compound Ingredient Modifier Code
  1. 363GET I '$D(SPECIAL(363)) S ABSP("X")=""
  1. ELSE X SPECIAL(363)
  1. Q
  1. 363FMT S:ABSP("X")'="" ABSP("X")="2H"_$$ANFF^ABSPECFM($G(ABSP("X")),2)
  1. Q
  1. 363SET ;Not Yet Implemented
  1. Q
  1. CLINICAL ;EP CALLED FROM ABSPDB1 to set up CLINICAL SEGMENT
  1. Q:$D(SUPRESSG("Clinical"))
  1. N RECCNT,DIAG
  1. I ACTION["CLAIM" D
  1. . Q:'$D(ABSP("RX",MEDN,"DIAG"))
  1. . ;Field 491 is only field on this segment that is not repeating do it first
  1. . D 491GET
  1. . D 491FMT
  1. . D 491SET
  1. . S (RECCNT,DIAG)=0
  1. . F S DIAG=$O(ABSP("RX",MEDN,"DIAG",DIAG)) Q:'+DIAG D
  1. . . S RECCNT=RECCNT+1
  1. . . N FIELD
  1. . . F FIELD="111C",492,424,493,494,495,496,497,499 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. . S ^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),491.01,0)="^9002313.0701A^"_RECCNT_"^"_RECCNT
  1. ELSE D
  1. . D DIAGVAL^ABSPECA1
  1. . Q:'$D(ABSP(9002313.0701))
  1. . D APPEND("111C") ;Only two non repeating fields (111, 491)
  1. . S ABSP("X")=$G(ABSP(9002313.0701,0,491,"I"))
  1. . S RECCNT=+$E(ABSP("X"),3,4)
  1. . S RECORD=RECORD_$C(28)_ABSP("X")
  1. . F DIAG=1:1:RECCNT D
  1. . . F FIELD=492,424,493,494,495,496,497,499 D
  1. . . . Q:$D(SUPRESF(FIELD))
  1. . . . S ABSP("X")=$G(ABSP(9002313.0701,DIAG,FIELD,"I"))
  1. . . . S:ABSP("X")'="" RECORD=RECORD_$C(28)_ABSP("X")
  1. Q
  1. ;Segment identifier
  1. 111CGET S ABSP("X")=13
  1. Q
  1. 111CFMT S ABSP("X")=$$ANFF^ABSPECFM(ABSP("X"),2)
  1. Q
  1. 111CSET ;This isn't used for the 111 Field
  1. Q
  1. ;Diagnosis Code Count
  1. 491GET I '$D(SPECIAL(491)) S ABSP("X")=$G(ABSP("RX",MEDN,"DIAG",0,491))
  1. ELSE X SPECIAL(491)
  1. Q
  1. 491FMT S:ABSP("X")'="" ABSP("X")="VE"_$$NFF^ABSPECFM(ABSP("X"),1)
  1. Q
  1. 491SET D FLD491^ABSPOSSH
  1. Q
  1. ;Diagnosis Code Qualifer
  1. 492GET I '$D(SPECIAL(492,DIAG)) S ABSP("X")=$G(ABSP("RX",MEDN,"DIAG",DIAG,492))
  1. ELSE X SPECIAL(492,DIAG)
  1. Q
  1. 492FMT S:ABSP("X")'="" ABSP("X")="WE"_$$ANFF^ABSPECFM(ABSP("X"),2)
  1. Q
  1. 492SET D FLD492^ABSPOSSH
  1. Q
  1. ;Diagnosis Code
  1. 424GET I '$D(SPECIAL(424,DIAG)) S ABSP("X")=$G(ABSP("RX",MEDN,"DIAG",DIAG,424))
  1. ELSE X SPECIAL(424,DIAG)
  1. Q
  1. 424FMT N INSIEN,REMOVE
  1. I ABSP("X")'="",$E(ABSP("X"),$L(ABSP("X")))="." S ABSP("X")=$E(ABSP("X"),1,$L(ABSP("X")-1))
  1. I ($D(SPECIAL(424))#10)=1 X SPECIAL(424) ; /IHS/OIT/RAM ; 28 SEP 17 ;P49-CR09768, ADD OVERALL FORMATTING CODE TO INSURER OVERRIDE SYSTEM.
  1. S INSIEN=+$G(ABSP("Insurer","IEN")),REMOVE=0
  1. S:INSIEN>0 REMOVE=+$P($G(^ABSPEI(INSIEN,"ICD10")),"^",2)
  1. S:REMOVE ABSP("X")=$TR($G(ABSP("X")),".","")
  1. S:ABSP("X")'="" ABSP("X")="DO"_$$ANFF^ABSPECFM($G(ABSP("X")),15)
  1. Q
  1. 424SET D FLD424^ABSPOSSH
  1. Q
  1. ;Clinical Information Counter
  1. 493GET I '$D(SPECIAL(493,DIAG)) S ABSP("X")=$G(ABSP("Clinical",ABSP(9002313.0201),"Information Cntr"))
  1. ELSE X SPECIAL(493,DIAG)
  1. Q
  1. 493FMT S:ABSP("X")'="" ABSP("X")="XE"_$$NFF^ABSPECFM(ABSP("X"),2)
  1. Q
  1. 493SET S $P(^ABSPC(ABSP(9002313.02),400,ABSP(9002313.0201),490),U,3)=ABSP("X")
  1. Q
  1. ;Measurement Date
  1. 494GET I '$D(SPECIAL(494,DIAG)) D
  1. . S ABSP("X")=$G(ABSP("RX",MEDN,"DIAG",DIAG,494))
  1. . S:ABSP("X")="" ABSP("X")=$G(ABSP("Clinical","Measurement Date"))
  1. ELSE X SPECIAL(494,DIAG)
  1. Q
  1. 494FMT S:ABSP("X")'="" ABSP("X")="ZE"_$$NFF^ABSPECFM(ABSP("X"),8)
  1. Q
  1. 494SET ;Not Yet Implemented
  1. Q
  1. ;Measurement Time
  1. 495GET I '$D(SPECIAL(495,DIAG)) D
  1. . S ABSP("X")=$G(ABSP("RX",MEDN,"DIAG",DIAG,495))
  1. . S:ABSP("X")="" ABSP("X")=$G(ABSP("Clinical","Measurement Time"))
  1. ELSE X SPECIAL(495,DIAG)
  1. Q
  1. 495FMT S:ABSP("X")'="" ABSP("X")="H1"_$$NFF^ABSPECFM(ABSP("X"),4)
  1. Q
  1. 495SET ;Not Yet Implemented
  1. Q
  1. ;Measurement Dimension
  1. 496GET I '$D(SPECIAL(496,DIAG)) D
  1. . S ABSP("X")=$G(ABSP("RX",MEDN,"DIAG",DIAG,496))
  1. . S:ABSP("X")="" ABSP("X")=$G(ABSP("Clinical","Measurement Dimension"))
  1. ELSE X SPECIAL(496,DIAG)
  1. Q
  1. 496FMT S:ABSP("X")'="" ABSP("X")="H2"_$$ANFF^ABSPECFM(ABSP("X"),2)
  1. Q
  1. 496SET ;Not Yet Implemented
  1. Q
  1. ;Measurement Unit
  1. 497GET I '$D(SPECIAL(497,DIAG)) D
  1. . S ABSP("X")=$G(ABSP("RX",MEDN,"DIAG",DIAG,497))
  1. . S:ABSP("X")="" ABSP("X")=$G(ABSP("Clinical","Measurement Unit"))
  1. ELSE X SPECIAL(497,DIAG)
  1. Q
  1. 497FMT S:ABSP("X")'="" ABSP("X")="H3"_$$ANFF^ABSPECFM(ABSP("X"),2)
  1. Q
  1. 497SET ;Not Yet Implemented
  1. Q
  1. ;Measurement Value
  1. 499GET I '$D(SPECIAL(499,DIAG)) D
  1. . S ABSP("X")=$G(ABSP("RX",MEDN,"DIAG",DIAG,499))
  1. . S:ABSP("X")="" ABSP("X")=$G(ABSP("Clinical","Measurement Value"))
  1. ELSE X SPECIAL(499,DIAG)
  1. Q
  1. 499FMT S:ABSP("X")'="" ABSP("X")="H4"_$$ANFF^ABSPECFM(ABSP("X"),15)
  1. Q
  1. 499SET ;Not Yet Implemented
  1. Q
  1. APPEND(FIELD) ;This is where the record is built field by field
  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.0201,IEN(9002313.01),FIELD,"I"))'="" S RECORD=RECORD_$C(28)_$G(ABSP(9002313.0201,IEN(9002313.01),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