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

PSORESK1.m

Go to the documentation of this file.
  1. PSORESK1 ;BHAM ISC/SAB - return to stock continued ;17-Jan-2014 11:18;DU
  1. ;;7.0;OUTPATIENT PHARMACY;**9,201,1018**;DEC 1997;Build 21
  1. ;IHS/MSC/MGH entry point CHECK ADDED 01/07/2014
  1. HP W !!,"Wand the barcode number of the Rx or manually key in",!,"the number below the barcode or the Rx number."
  1. W !,"The barcode number format is - 'NNN-NNNNNNN'",!!,"Press 'ENTER' to process Rx or ""^"" to quit"
  1. Q
  1. STAT S RX0=^PSRX(RXP,0),RX2=^PSRX(RXP,2),J=RXP S $P(RX0,"^",15)=$P($G(^PSRX(RXP,"STA")),"^") D ^PSOFUNC
  1. W !!,$C(7),$C(7),"Rx status of "_ST_" and cannot be returned to stock.",! K RX0,ST Q
  1. CP D NOW^%DTC S PSODT=%
  1. S PSOCPRX=$P(^PSRX(RXP,0),"^") S PSO=1,PSODA=RXP,PSOPAR7=$G(^PS(59,PSOSITE,"IB")) W !!,"Attempting to remove copay charges",! D RXED^PSOCPA
  1. I COPAYFLG=0 W !!,"Reason must be entered. Rx "_$P(^PSRX(RXP,0),"^")_" not returned to stock.",!
  1. ;PFS: send Rx info to external billing system when copay and no copay.
  1. Q
  1. ACT S IFN=0 F I=0:0 S I=$O(^PSRX(RXP,"A",I)) Q:'I S IFN=I
  1. I $G(PSOWHERE) S COM=$G(COM)_" (Released by CMOP)"
  1. I +$G(PSOPFS) S:$P(PSOPFS,"^",3)'="" COM=$G(COM)_" (External Billing Charge ID: "_$P(PSOPFS,"^",3)_")"
  1. D NOW^%DTC S IFN=IFN+1,^PSRX(RXP,"A",0)="^52.3DA^"_IFN_"^"_IFN,^PSRX(RXP,"A",IFN,0)=%_"^I^"_DUZ_"^"_$S(XTYPE="O":0,$G(TYPE)'<0&($G(TYPE)<6)&(XTYPE):TYPE,$G(TYPE)>5&(XTYPE):(TYPE+1),1:6)_"^"_COM
  1. K DA Q
  1. CMOP ;original released by CMOP? Called by PSORESK
  1. S PSXREL=$P($G(^PSRX(RXP,2)),"^",13)
  1. I $G(PSXREL),($D(^PSRX("AR",PSXREL,RXP,0))) W !!,$C(7),"Rx # "_$P(^PSRX(RXP,0),"^")_":",?20," Was dispensed by the CMOP and may not be returned"
  1. I W !,?20," to stock at this facility." Q
  1. K PSXREL
  1. Q
  1. CMOP1 ; REFILL released by CMOP? Called by PSORESK
  1. I +$G(XTYPE) S PSXREL=$P($G(^PSRX(RXP,1,TYPE,0)),"^",18)
  1. I $G(PSXREL),($D(^PSRX("AR",PSXREL,RXP,TYPE))) W !!,"REFILL # "_TYPE_":",?20," Was dispensed by the CMOP and may not be returned"
  1. I W !,?20," to stock at this facility." Q
  1. K PSXREL
  1. Q
  1. CHECK(RX) ;IHS/MSC/MGH Check and update the expiration date as needed
  1. N EXP,OLDEXP,REF,REMFILL
  1. S OLDEXP=$$GET1^DIQ(52,RX,26,"I")
  1. S REF=$$GET1^DIQ(52,RX,9)
  1. I REF=0 S EXP=$$CHANGE(RX) ;This is an original fill, change expiration date back after RTS
  1. E D
  1. .S REMFILL=$$RMNRFL^APSPFUNC(RX)
  1. .I REMFILL>1 S EXP=OLDEXP ;There are still more refills left, keep original expiration date
  1. .E S EXP=$$CHANGE(RX) ;One or no fills left, change expiration date back after RTS
  1. Q EXP
  1. CHANGE(RX) ;Change the expiration date back based on issue date and other logic
  1. N EXPDTE,CS,DRG,EXTEXP,ISSDT
  1. S DRG=$$GET1^DIQ(52,RX,6,"I")
  1. S CS=$$ISSCH^APSPFNC2(DRG,"2345")
  1. S $P(CS,U,2)=$$ISSCH^APSPFNC2(DRG,"2")
  1. S EXTEXP=$$GET1^DIQ(50,DRG,9999999.08,"I")
  1. S ISSDT=$$GET1^DIQ(52,RX,1,"I")
  1. S X2=$S(EXTEXP:EXTEXP,$P(CS,U,2):184,CS:184,1:366)
  1. S EXPDTE=$$FMADD^XLFDT(ISSDT,X2)
  1. Q EXPDTE