- ABSPOS6B ; IHS/FCS/DRS - user display screen, cont ;
- ;;1.0;PHARMACY POINT OF SALE;*29,31*;JUN 21, 2001;Build 38
- Q
- INFO(PAT,RXI) ;EP - from ABSPOS6H
- ; IF '$G(RXI), then this is a patient summary line:
- ; INFO("%")=% completion
- ; INFO("COUNT")=how many for this patient
- ; INFO("PATIEN")=ien into patient file
- ; INFO("STAT",status)=count
- ; INFO("RES")="- - - 3 prescriptions - - -", for example, if inc.
- ; but if complete,
- ; INFO("RES")="* FINISHED * 1 rejected * 2 payable", for example
- ;
- ; If we are going to do prescription detail, then the RESULTS
- ; area for this patient will simply say how many prescriptions
- ; and each individual prescription has its own result detail
- ; But if this is a patient summary with no prescription detail,
- ; then pull all the results together into:
- ; INFO("RES",result code^text)=count
- ;
- ; IF $G(RXI), then this is a prescription detail line
- ; INFO("DRUG")=drug name
- ; INFO("RES")=final result or processing status, and presc. #
- ; (depending on whether status is 100% or not)
- ; INFO("PATIEN") as above
- ; INFO("STAT")=processing status (text)
- ; INFO("DUR")=Brief DUR response info (just conflict and message)
- ;
- INFO1 IF $G(RXI) D Q
- .N REVERSAL S REVERSAL=$G(^ABSPT(RXI,4)) ; is it a rev'l?
- .I 'REVERSAL S REVERSAL=$P(REVERSAL,U,3) ; if not elect, maybe paper
- .N INSURER S INSURER=$P(^ABSPT(RXI,1),U,6)
- .S INSURER=$S(INSURER:$P(^AUTNINS(INSURER,0),U),1:"")
- .; eligibility etc. for SELF PAY reworded during final result
- .; in ABSPOSQ1 and then again for real in billing
- .N IEN52 S IEN52=$P(^ABSPT(RXI,1),U,11)
- .N X
- .I IEN52 D
- . . N RX0 S RX0=$G(^PSRX(IEN52,0)),X=$P(RX0,U,6)
- . . I X]"" S X=$P($G(^PSDRUG(X,0)),U)
- . . I X="" S X="(can't find in DRUG file?)"
- . . I RXI[".",$E(RXI,$L(RXI))=2 S X="Postage-"_X
- .E D
- . . N CPT S CPT=$P(RXI,".",2),CPT=+$E(CPT,1,$L(CPT)-1)
- . . ; $GET because of timing problem?
- . . S X=$P($G(^ABSCPT(9002300,CPT,0)),U,2) ; short desc
- .S INFO("DRUG")=X,INFO("STAT")=""
- .;I ONEPAT S INFO("STAT")=$$ONEPAT^ABSPOS6C_" " ; dates
- .;I REVERSAL S INFO("STAT")=INFO("STAT")_"*REVERSAL* "
- .S INFO("RES")=INFO("STAT")
- .N STAT S STAT=$P(@DISP@(PAT,RXI),U,2)
- .I STAT=100 D
- . . S INFO("DUR")=$$DURBRIEF^ABSPOS6G(RXI)
- . . I INFO("DUR")]"" S INFO("RES")=INFO("RES")_"DUR! "
- .E D
- . . S INFO("DUR")=""
- . . S INFO("STAT")=INFO("STAT")_$$STATI^ABSPOSU(STAT)
- .I STAT=31!(STAT=51) D ; retry due to comms problem or ins. asleep
- . . N X S X=$G(^ABSPT(RXI,8)) Q:X=""
- . . N Y S Y=$P(X,U) X ^DD("DD") S Y=$P(Y,"@",2),X=$P(X,U,2)
- . . S INFO("STAT")=INFO("STAT")_" after "_Y
- . . Q:'X S X=$P(^ABSP(9002313.55,X,0),U)
- . . I STAT=51 S INFO("STAT")=INFO("STAT")_" to dial out to "_X
- .I INSURER]"" D
- . . N X S X=INFO("STAT")_" "
- . . S X=X_$S(STAT>99:"by",STAT>69:"from",STAT>49:"to",1:"for")
- . . S INFO("STAT")=X_" "_INSURER
- .I STAT=100 D
- . . N X S X=$$RESULT(RXI)
- . . S INFO("RES")=$S(X]"":X,1:"(Missing result?)")
- . E S INFO("RES")=INFO("STAT")
- .S INFO("RES")=INFO("RES")_" ("_$S(RXI[".":RXI,1:"Prescription `"_RXI)_")"
- .S INFO("PATIEN")=$P(^ABSPT(RXI,0),U,6)
- .I 'INFO("PATIEN") S INFO("PATIEN")=$P($G(^PSRX(IEN52,0)),U,2)
- .I INFO("DUR")]"" S INFO("RES")=INFO("RES")_" DUR:"_INFO("DUR")
- .I REVERSAL S INFO("RES")="*REVERSAL* "_INFO("RES")
- .I ONEPAT S INFO("RES")=$$ONEPAT^ABSPOS6C_" "_INFO("RES")
- .I STAT<99,$G(^ABSPT(RXI,3)) D
- ..S INFO("RES")="*CANCELLATION REQUESTED* "_INFO("RES")
- ;
- ; Else we're doing a patient record:
- ;
- INFO6 N X S X=@DISP@(PAT)
- N N,K S (N,INFO("COUNT"))=$P(X,U,4)
- S INFO("%")=$P(X,U,2)/$P(X,U,4)+.5\1
- I INFO("%")=100 D
- .S INFO("RES")="** FINISHED ** "
- .I $P(X,U,5)+$P(X,U,6)+$P(X,U,7)+$P(X,U,8)+$P(X,U,9)'=N D INFO8 ;reCALC
- .S K=$P(X,U,5) I K D S INFO("RES")=INFO("RES")_K_" rejected *"
- ..S K=$S(N=1:"",K=N:$S(K=2:"BOTH",1:"ALL"),1:K)
- .S K=$P(X,U,6) I K D S INFO("RES")=INFO("RES")_K_" not electronic *"
- ..S K=$S(N=1:"",K=N:$S(K=2:"BOTH",1:"ALL"),1:K)
- .S K=$P(X,U,7) I K D S INFO("RES")=INFO("RES")_K_" payable *"
- ..S K=$S(N=1:"",K=N:$S(K=2:"BOTH",1:"ALL"),1:K)
- .S K=$P(X,U,8) I K D S INFO("RES")=INFO("RES")_K_" rejected reversal *"
- ..S K=$S(N=1:"",K=N:$S(K=2:"BOTH",1:"ALL"),1:K)
- .S K=$P(X,U,9) I K D S INFO("RES")=INFO("RES")_K_" accepted reversal *"
- ..S K=$S(N=1:"",K=N:$S(K=2:"BOTH",1:"ALL"),1:K)
- .S INFO("RES")=INFO("RES")_"*"
- E D
- .N N,S ;,C
- .S N=$P(X,U,4),S=$S(N=1:"",1:"s") ;,C=$P(X,U,5)+$P(X,U,6)+$P(X,U,7)
- .S INFO("RES")=" - - - "_N_" prescription"_S_" - - -"
- ; Set DODETAIL=1 if we are doing prescription detail, 0 if not
- N DODETAIL S DODETAIL=1 ;(INFO("COUNT")'<^TMP("ABSPOS",$J,"DETAIL"))
- N RXI,I S RXI="" F I=1:1:INFO("COUNT") D
- .S RXI=$O(@DISP@(PAT,RXI))
- .N IEN52 S IEN52=$P(^ABSPT(RXI,1),U,11)
- .I I=1 D
- . . S INFO("PATIEN")=$P(^ABSPT(RXI,0),U,6)
- . . ;S INFO("PATIEN")=$P($G(^PSRX(IEN52,0)),U,2)
- .I 'DODETAIL D ; if not doing line item detail, summarize it
- ..S X=$$RESULT(RXI)
- ..I X]"" S INFO("RES",X)=$G(INFO("RES",X))+1
- ..N STAT S STAT=$P(@DISP@(PAT,RXI),U,2),INFO("STAT",STAT)=$G(INFO("STAT",STAT))+1
- Q
- INFO8 ; retally the counts of rejected, not electronic, payable
- ; This could be necessary if a prescription was rejected, then
- ; resubmitted with corrections, and then paid - it would have been
- ; counted in two different buckets.
- ; Given X = the current value of @DISP@(PAT)
- ; Fix X and also store the fixed-up version in @DISP@(PAT,RXI)
- S $P(X,U,5,9)="0^0^0^0^0" ; reset the counts
- N RXI S RXI="" F S RXI=$O(@DISP@(PAT,RXI)) Q:RXI="" D INFO9
- S @DISP@(PAT)=X
- Q
- INFO9 ; Given X, PAT, RXI, @DISP@(PAT,RXI)
- N B S B=$$BUCKET(RXI)
- S $P(X,U,B)=$P(X,U,B)+1
- Q
- BUCKET(RXI) ;EP - from ABSPOS6I
- ; for ^TMP("ABSPOS",$J,"DISP") pieces
- N R S R=$E($$RSPTYP(RXI))
- N V S V=$G(^ABSPT(RXI,4))
- I R="P" Q 7
- I R="" Q 6
- I R="R" Q $S(V:8,1:5)
- I R="A" Q 9
- Q 6 ; NEED A VALID BUCKET, EVEN IF THIS IS THE WRONG ONE
- ; 5 if rejected claim
- ; 6 if other failure
- ; 7 if paid
- ; 8 if rejected reversal
- ; 9 if accepted reversal
- RESULT(RXI) ;EP - from ABSPOSIV
- N REC,RES,M S M=240 S REC(2)=$G(^ABSPT(RXI,2))
- I REC(2)="" Q ""
- N RES S RES=$P(REC(2),U),REC(2)=$P(REC(2),U,2,$L(REC(2),U))
- I RES=1 Q REC(2)
- I RES'=0 Q REC(2)_" (code "_RES_")"
- ; RES=0, good, we can go to the claim response and see what it says
- N RSP D RESPINFO^ABSPOSQ4(RXI,.RSP)
- ; Rework this - 10/28/2000 - because Oklahoma Medicaid seems to
- ; make Packet Header Rejected, even though the Header is acceptable.
- ; But apparently if all the prescriptions are rejected, they give
- ; you a rejected packet header. Or maybe if it's a patient-level
- ; problem, they do that. Anyhow, the change made today is to always
- ; print individual prescription rejection reasons and to push the
- ; "PACKET HEADER REJECTED" message to the end.
- D ;
- .;S RES=RSP("RSP") ; prescription response status
- .S RES=$G(RSP("RSP")) ; prescription response status IHS/OIT/SCR patch 29
- .I RES="Rejected" D
- ..S RES=RES_"("
- ..N I F I=1:1:RSP("REJ",0) D
- ...I I'=1 S RES=RES_","
- ...S RES=RES_RSP("REJ",I)
- ...I $L(RES)>M S RES=$E(RES,1,M)
- ..S RES=RES_")"
- ;I RSP("MSG")]"" S RES=RES_"; "_RSP("MSG") ; and any extra message
- I $G(RSP("MSG"))]"" S RES=RES_"; "_RSP("MSG") ; and any extra message
- ;I RSP("HDR")'="Accepted" D ;packet header not accepted
- I $G(RSP("HDR"))'="Accepted" D ;packet header not accepted
- .;I RSP("HDR")="" S RSP("HDR")="?status null?"
- .I $G(RSP("HDR"))="" S RSP("HDR")="?status null?" ;IHS/OIT/SCR 05/15/09 patch 31
- .S RES=RES_";PACKET HEADER "_RSP("HDR")
- Q $E(RES,1,M)
- RSPTYP(RXI) ; quicker version of RESULT
- ; returns P payable, R rejected, or C or D, or "" if no resp packet
- N RSP D RESPINFO^ABSPOSQ4(RXI,.RSP)
- Q $G(RSP("RSP"))
- ;
- ABSPOS6B ; IHS/FCS/DRS - user display screen, cont ;
- +1 ;;1.0;PHARMACY POINT OF SALE;*29,31*;JUN 21, 2001;Build 38
- +2 QUIT
- INFO(PAT,RXI) ;EP - from ABSPOS6H
- +1 ; IF '$G(RXI), then this is a patient summary line:
- +2 ; INFO("%")=% completion
- +3 ; INFO("COUNT")=how many for this patient
- +4 ; INFO("PATIEN")=ien into patient file
- +5 ; INFO("STAT",status)=count
- +6 ; INFO("RES")="- - - 3 prescriptions - - -", for example, if inc.
- +7 ; but if complete,
- +8 ; INFO("RES")="* FINISHED * 1 rejected * 2 payable", for example
- +9 ;
- +10 ; If we are going to do prescription detail, then the RESULTS
- +11 ; area for this patient will simply say how many prescriptions
- +12 ; and each individual prescription has its own result detail
- +13 ; But if this is a patient summary with no prescription detail,
- +14 ; then pull all the results together into:
- +15 ; INFO("RES",result code^text)=count
- +16 ;
- +17 ; IF $G(RXI), then this is a prescription detail line
- +18 ; INFO("DRUG")=drug name
- +19 ; INFO("RES")=final result or processing status, and presc. #
- +20 ; (depending on whether status is 100% or not)
- +21 ; INFO("PATIEN") as above
- +22 ; INFO("STAT")=processing status (text)
- +23 ; INFO("DUR")=Brief DUR response info (just conflict and message)
- +24 ;
- INFO1 IF $GET(RXI)
- Begin DoDot:1
- +1 ; is it a rev'l?
- NEW REVERSAL
- SET REVERSAL=$GET(^ABSPT(RXI,4))
- +2 ; if not elect, maybe paper
- IF 'REVERSAL
- SET REVERSAL=$PIECE(REVERSAL,U,3)
- +3 NEW INSURER
- SET INSURER=$PIECE(^ABSPT(RXI,1),U,6)
- +4 SET INSURER=$SELECT(INSURER:$PIECE(^AUTNINS(INSURER,0),U),1:"")
- +5 ; eligibility etc. for SELF PAY reworded during final result
- +6 ; in ABSPOSQ1 and then again for real in billing
- +7 NEW IEN52
- SET IEN52=$PIECE(^ABSPT(RXI,1),U,11)
- +8 NEW X
- +9 IF IEN52
- Begin DoDot:2
- +10 NEW RX0
- SET RX0=$GET(^PSRX(IEN52,0))
- SET X=$PIECE(RX0,U,6)
- +11 IF X]""
- SET X=$PIECE($GET(^PSDRUG(X,0)),U)
- +12 IF X=""
- SET X="(can't find in DRUG file?)"
- +13 IF RXI["."
- IF $EXTRACT(RXI,$LENGTH(RXI))=2
- SET X="Postage-"_X
- End DoDot:2
- +14 IF '$TEST
- Begin DoDot:2
- +15 NEW CPT
- SET CPT=$PIECE(RXI,".",2)
- SET CPT=+$EXTRACT(CPT,1,$LENGTH(CPT)-1)
- +16 ; $GET because of timing problem?
- +17 ; short desc
- SET X=$PIECE($GET(^ABSCPT(9002300,CPT,0)),U,2)
- End DoDot:2
- +18 SET INFO("DRUG")=X
- SET INFO("STAT")=""
- +19 ;I ONEPAT S INFO("STAT")=$$ONEPAT^ABSPOS6C_" " ; dates
- +20 ;I REVERSAL S INFO("STAT")=INFO("STAT")_"*REVERSAL* "
- +21 SET INFO("RES")=INFO("STAT")
- +22 NEW STAT
- SET STAT=$PIECE(@DISP@(PAT,RXI),U,2)
- +23 IF STAT=100
- Begin DoDot:2
- +24 SET INFO("DUR")=$$DURBRIEF^ABSPOS6G(RXI)
- +25 IF INFO("DUR")]""
- SET INFO("RES")=INFO("RES")_"DUR! "
- End DoDot:2
- +26 IF '$TEST
- Begin DoDot:2
- +27 SET INFO("DUR")=""
- +28 SET INFO("STAT")=INFO("STAT")_$$STATI^ABSPOSU(STAT)
- End DoDot:2
- +29 ; retry due to comms problem or ins. asleep
- IF STAT=31!(STAT=51)
- Begin DoDot:2
- +30 NEW X
- SET X=$GET(^ABSPT(RXI,8))
- IF X=""
- QUIT
- +31 NEW Y
- SET Y=$PIECE(X,U)
- XECUTE ^DD("DD")
- SET Y=$PIECE(Y,"@",2)
- SET X=$PIECE(X,U,2)
- +32 SET INFO("STAT")=INFO("STAT")_" after "_Y
- +33 IF 'X
- QUIT
- SET X=$PIECE(^ABSP(9002313.55,X,0),U)
- +34 IF STAT=51
- SET INFO("STAT")=INFO("STAT")_" to dial out to "_X
- End DoDot:2
- +35 IF INSURER]""
- Begin DoDot:2
- +36 NEW X
- SET X=INFO("STAT")_" "
- +37 SET X=X_$SELECT(STAT>99:"by",STAT>69:"from",STAT>49:"to",1:"for")
- +38 SET INFO("STAT")=X_" "_INSURER
- End DoDot:2
- +39 IF STAT=100
- Begin DoDot:2
- +40 NEW X
- SET X=$$RESULT(RXI)
- +41 SET INFO("RES")=$SELECT(X]"":X,1:"(Missing result?)")
- End DoDot:2
- +42 IF '$TEST
- SET INFO("RES")=INFO("STAT")
- +43 SET INFO("RES")=INFO("RES")_" ("_$SELECT(RXI[".":RXI,1:"Prescription `"_RXI)_")"
- +44 SET INFO("PATIEN")=$PIECE(^ABSPT(RXI,0),U,6)
- +45 IF 'INFO("PATIEN")
- SET INFO("PATIEN")=$PIECE($GET(^PSRX(IEN52,0)),U,2)
- +46 IF INFO("DUR")]""
- SET INFO("RES")=INFO("RES")_" DUR:"_INFO("DUR")
- +47 IF REVERSAL
- SET INFO("RES")="*REVERSAL* "_INFO("RES")
- +48 IF ONEPAT
- SET INFO("RES")=$$ONEPAT^ABSPOS6C_" "_INFO("RES")
- +49 IF STAT<99
- IF $GET(^ABSPT(RXI,3))
- Begin DoDot:2
- +50 SET INFO("RES")="*CANCELLATION REQUESTED* "_INFO("RES")
- End DoDot:2
- End DoDot:1
- QUIT
- +51 ;
- +52 ; Else we're doing a patient record:
- +53 ;
- INFO6 NEW X
- SET X=@DISP@(PAT)
- +1 NEW N,K
- SET (N,INFO("COUNT"))=$PIECE(X,U,4)
- +2 SET INFO("%")=$PIECE(X,U,2)/$PIECE(X,U,4)+.5\1
- +3 IF INFO("%")=100
- Begin DoDot:1
- +4 SET INFO("RES")="** FINISHED ** "
- +5 ;reCALC
- IF $PIECE(X,U,5)+$PIECE(X,U,6)+$PIECE(X,U,7)+$PIECE(X,U,8)+$PIECE(X,U,9)'=N
- DO INFO8
- +6 SET K=$PIECE(X,U,5)
- IF K
- Begin DoDot:2
- +7 SET K=$SELECT(N=1:"",K=N:$SELECT(K=2:"BOTH",1:"ALL"),1:K)
- End DoDot:2
- SET INFO("RES")=INFO("RES")_K_" rejected *"
- +8 SET K=$PIECE(X,U,6)
- IF K
- Begin DoDot:2
- +9 SET K=$SELECT(N=1:"",K=N:$SELECT(K=2:"BOTH",1:"ALL"),1:K)
- End DoDot:2
- SET INFO("RES")=INFO("RES")_K_" not electronic *"
- +10 SET K=$PIECE(X,U,7)
- IF K
- Begin DoDot:2
- +11 SET K=$SELECT(N=1:"",K=N:$SELECT(K=2:"BOTH",1:"ALL"),1:K)
- End DoDot:2
- SET INFO("RES")=INFO("RES")_K_" payable *"
- +12 SET K=$PIECE(X,U,8)
- IF K
- Begin DoDot:2
- +13 SET K=$SELECT(N=1:"",K=N:$SELECT(K=2:"BOTH",1:"ALL"),1:K)
- End DoDot:2
- SET INFO("RES")=INFO("RES")_K_" rejected reversal *"
- +14 SET K=$PIECE(X,U,9)
- IF K
- Begin DoDot:2
- +15 SET K=$SELECT(N=1:"",K=N:$SELECT(K=2:"BOTH",1:"ALL"),1:K)
- End DoDot:2
- SET INFO("RES")=INFO("RES")_K_" accepted reversal *"
- +16 SET INFO("RES")=INFO("RES")_"*"
- End DoDot:1
- +17 IF '$TEST
- Begin DoDot:1
- +18 ;,C
- NEW N,S
- +19 ;,C=$P(X,U,5)+$P(X,U,6)+$P(X,U,7)
- SET N=$PIECE(X,U,4)
- SET S=$SELECT(N=1:"",1:"s")
- +20 SET INFO("RES")=" - - - "_N_" prescription"_S_" - - -"
- End DoDot:1
- +21 ; Set DODETAIL=1 if we are doing prescription detail, 0 if not
- +22 ;(INFO("COUNT")'<^TMP("ABSPOS",$J,"DETAIL"))
- NEW DODETAIL
- SET DODETAIL=1
- +23 NEW RXI,I
- SET RXI=""
- FOR I=1:1:INFO("COUNT")
- Begin DoDot:1
- +24 SET RXI=$ORDER(@DISP@(PAT,RXI))
- +25 NEW IEN52
- SET IEN52=$PIECE(^ABSPT(RXI,1),U,11)
- +26 IF I=1
- Begin DoDot:2
- +27 SET INFO("PATIEN")=$PIECE(^ABSPT(RXI,0),U,6)
- +28 ;S INFO("PATIEN")=$P($G(^PSRX(IEN52,0)),U,2)
- End DoDot:2
- +29 ; if not doing line item detail, summarize it
- IF 'DODETAIL
- Begin DoDot:2
- +30 SET X=$$RESULT(RXI)
- +31 IF X]""
- SET INFO("RES",X)=$GET(INFO("RES",X))+1
- +32 NEW STAT
- SET STAT=$PIECE(@DISP@(PAT,RXI),U,2)
- SET INFO("STAT",STAT)=$GET(INFO("STAT",STAT))+1
- End DoDot:2
- End DoDot:1
- +33 QUIT
- INFO8 ; retally the counts of rejected, not electronic, payable
- +1 ; This could be necessary if a prescription was rejected, then
- +2 ; resubmitted with corrections, and then paid - it would have been
- +3 ; counted in two different buckets.
- +4 ; Given X = the current value of @DISP@(PAT)
- +5 ; Fix X and also store the fixed-up version in @DISP@(PAT,RXI)
- +6 ; reset the counts
- SET $PIECE(X,U,5,9)="0^0^0^0^0"
- +7 NEW RXI
- SET RXI=""
- FOR
- SET RXI=$ORDER(@DISP@(PAT,RXI))
- IF RXI=""
- QUIT
- DO INFO9
- +8 SET @DISP@(PAT)=X
- +9 QUIT
- INFO9 ; Given X, PAT, RXI, @DISP@(PAT,RXI)
- +1 NEW B
- SET B=$$BUCKET(RXI)
- +2 SET $PIECE(X,U,B)=$PIECE(X,U,B)+1
- +3 QUIT
- BUCKET(RXI) ;EP - from ABSPOS6I
- +1 ; for ^TMP("ABSPOS",$J,"DISP") pieces
- +2 NEW R
- SET R=$EXTRACT($$RSPTYP(RXI))
- +3 NEW V
- SET V=$GET(^ABSPT(RXI,4))
- +4 IF R="P"
- QUIT 7
- +5 IF R=""
- QUIT 6
- +6 IF R="R"
- QUIT $SELECT(V:8,1:5)
- +7 IF R="A"
- QUIT 9
- +8 ; NEED A VALID BUCKET, EVEN IF THIS IS THE WRONG ONE
- QUIT 6
- +9 ; 5 if rejected claim
- +10 ; 6 if other failure
- +11 ; 7 if paid
- +12 ; 8 if rejected reversal
- +13 ; 9 if accepted reversal
- RESULT(RXI) ;EP - from ABSPOSIV
- +1 NEW REC,RES,M
- SET M=240
- SET REC(2)=$GET(^ABSPT(RXI,2))
- +2 IF REC(2)=""
- QUIT ""
- +3 NEW RES
- SET RES=$PIECE(REC(2),U)
- SET REC(2)=$PIECE(REC(2),U,2,$LENGTH(REC(2),U))
- +4 IF RES=1
- QUIT REC(2)
- +5 IF RES'=0
- QUIT REC(2)_" (code "_RES_")"
- +6 ; RES=0, good, we can go to the claim response and see what it says
- +7 NEW RSP
- DO RESPINFO^ABSPOSQ4(RXI,.RSP)
- +8 ; Rework this - 10/28/2000 - because Oklahoma Medicaid seems to
- +9 ; make Packet Header Rejected, even though the Header is acceptable.
- +10 ; But apparently if all the prescriptions are rejected, they give
- +11 ; you a rejected packet header. Or maybe if it's a patient-level
- +12 ; problem, they do that. Anyhow, the change made today is to always
- +13 ; print individual prescription rejection reasons and to push the
- +14 ; "PACKET HEADER REJECTED" message to the end.
- +15 ;
- Begin DoDot:1
- +16 ;S RES=RSP("RSP") ; prescription response status
- +17 ; prescription response status IHS/OIT/SCR patch 29
- SET RES=$GET(RSP("RSP"))
- +18 IF RES="Rejected"
- Begin DoDot:2
- +19 SET RES=RES_"("
- +20 NEW I
- FOR I=1:1:RSP("REJ",0)
- Begin DoDot:3
- +21 IF I'=1
- SET RES=RES_","
- +22 SET RES=RES_RSP("REJ",I)
- +23 IF $LENGTH(RES)>M
- SET RES=$EXTRACT(RES,1,M)
- End DoDot:3
- +24 SET RES=RES_")"
- End DoDot:2
- End DoDot:1
- +25 ;I RSP("MSG")]"" S RES=RES_"; "_RSP("MSG") ; and any extra message
- +26 ; and any extra message
- IF $GET(RSP("MSG"))]""
- SET RES=RES_"; "_RSP("MSG")
- +27 ;I RSP("HDR")'="Accepted" D ;packet header not accepted
- +28 ;packet header not accepted
- IF $GET(RSP("HDR"))'="Accepted"
- Begin DoDot:1
- +29 ;I RSP("HDR")="" S RSP("HDR")="?status null?"
- +30 ;IHS/OIT/SCR 05/15/09 patch 31
- IF $GET(RSP("HDR"))=""
- SET RSP("HDR")="?status null?"
- +31 SET RES=RES_";PACKET HEADER "_RSP("HDR")
- End DoDot:1
- +32 QUIT $EXTRACT(RES,1,M)
- RSPTYP(RXI) ; quicker version of RESULT
- +1 ; returns P payable, R rejected, or C or D, or "" if no resp packet
- +2 NEW RSP
- DO RESPINFO^ABSPOSQ4(RXI,.RSP)
- +3 QUIT $GET(RSP("RSP"))
- +4 ;