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

PSOHLDS6.m

Go to the documentation of this file.
PSOHLDS6 ;BIR/MV,RBD - Update Host site for a OneVA fill ;18 Feb 2025  8:56 AM
 ;;7.0;OUTPATIENT PHARMACY;**643,736,774**;DEC 1997;Build 15
 ;
 ; Reference to DUZ^XUP supported by DBIA #4129
 ;
HOST ;Update dispensing information at the host site for a OneVa OPAI fill, p736 - handle possible HLNODE overflow nodes
 N PSOHAIL,PSOHSUB,PSOHORC,PSOHRXD,PSOMSG,J,PSOHIEN,PSOHIENR,PSOHFILL,PSOHCHEK,PSOS5209,PSOHTPE,PSOHFLOT,PSOHSEXP,PSOHSMAN,PSOHSNDC,PSOHNTE,PSOHSUBR
 N ORC K PSOMSG F PSOHAIL=1:1 X HLNEXT Q:HLQUIT'>0  S PSOMSG(PSOHAIL)=HLNODE,J=0 S:$D(HLNODE(PSOHAIL)) HLNODE=HLNODE_HLNODE(PSOHAIL) D
 .I $P(PSOMSG(PSOHAIL),"|")="MSA"!($P(PSOMSG(PSOHAIL),"|")="RXR") Q
 .I $P(PSOMSG(PSOHAIL),"|")="ORC"  S PSOHORC=PSOMSG(PSOHAIL) Q
 .I $P(PSOMSG(PSOHAIL),"|")="RXD" S PSOHRXD=PSOMSG(PSOHAIL) Q
 .I $P(PSOMSG(PSOHAIL),"|")="NTE" S PSOHNTE=PSOMSG(PSOHAIL)
 S PSOHIEN=$P($P($G(PSOHORC),"|",3),"~") I PSOHIEN'="" S PSOHIENR=$O(^PSRX("B",PSOHIEN,0)) Q:'PSOHIENR
 S PSOHFILL=$P($G(PSOHORC),"|",11),PSOHCHEK=$P($G(PSOHORC),"|",12),PSOHTPE=$P($G(PSOHORC),"|",2)
 S PSOHSUB=$P($G(PSOHRXD),"|",2),PSOS5209=$P($G(PSOHRXD),"|",14),PSOHFLOT=$P($G(PSOHRXD),"|",19)
 S PSOHSEXP=$P($G(PSOHRXD),"|",20),PSOHSMAN=$P($G(PSOHRXD),"|",21)
 S PSOHSNDC=$P($G(PSOHRXD),"|",10)
 S PSOHSEXP=$$FMDATE^HLFNC(PSOHSEXP)
 I PSOS5209 D
 .S $P(^PSRXR(52.09,PSOS5209,0),"^",11)=$G(PSOHFILL)
 .S $P(^PSRXR(52.09,PSOS5209,0),"^",12)=$G(PSOHCHEK)
 .I $G(PSOHNTE)'="" D
 ..S $P(^PSRXR(52.09,PSOS5209,4),"^")=$P(PSOHNTE,"|",4)
 ..I $P(PSOHNTE,"|",4)'="" S ^PSRXR(52.09,"F",$P(PSOHNTE,"|",4),PSOS5209)=""
 ..S $P(^PSRXR(52.09,PSOS5209,4),"^",3)=$P(PSOHNTE,"|",5)
 ..S $P(^PSRXR(52.09,PSOS5209,4),"^",4)=$P(PSOHNTE,"|",6)
 ..S $P(^PSRXR(52.09,PSOS5209,4),"^",5)=$P(PSOHNTE,"|",7)
 ; RBD *774 Removed "Q:'PSOHSUB" so that Original Fill logic can pass through
 ;
 S:PSOHTPE="RF" $P(^PSRXR(52.09,PSOS5209,0),"^",13)=PSOHSUB
 S:PSOHTPE="PR" $P(^PSRXR(52.09,PSOS5209,0),"^",14)=PSOHSUB
 ;
 I PSOHIENR D    ; RBD *774 Removed PSOHSUB from IF check so Original Fill logic can be done
 .S:$G(PSOHSUB)]"" PSOHSUBR=$S(PSOHTPE="PR":6,1:$S(PSOHSUB>5:PSOHSUB+1,1:PSOHSUB))   ; RBD *774 If PSOHSUB valued follow usual non-Original Fill path
 .S:$G(PSOHSUB)']"" PSOHSUBR=0 D ACT^PSORREF($S(PSOHTPE="RF":"R",1:"P"),PSOHIENR,PSOHSUBR)   ; RBD *774 Set PSOHSUBR to 0 when PSOHSUB blank (Original Fill path)
 .I $P(^PSRXR(52.09,PSOS5209,4),"^",5) D ACTD^PSORREF("X","HL7 ID "_$P(PSOHNTE,"|",4)_" MESSAGE TRANSMITTED TO "_$P(PSOHNTE,"|",5)_" ("_$P(PSOHNTE,"|",6)_")")
 .D ACTD^PSORREF("N","External Interface Dispensing is Complete.")
 D UPDH^PSORREF
 Q
 ;
UPDHREL ; RBD *774 - UPDHREL New for Auto-Release of Original Fills, Refills and Partial Fills
 ; Logic emulates Auto Release logic from PSOHLDIS, but is crafted for OneVA
 N DIV,DRG,DUZ,PSOCPRX,PSOERR,PSOPAR,PSOSITE,PSRX0,QTY,RELDT,RPHARM,RXP
 S RPHARM=$$FIND1^DIC(200,,"M","PSOAUTORELEASE,PROXY USER") I 'RPHARM S RPHARM=.5
 D DUZ^XUP(RPHARM)   ; DUZ is needed downstream and takes on the value of RPHARM by this call
 S PSRX0=$G(^PSRX(IRX,0)),DRG=$P(PSRX0,"^",6),QTY=$P(PSRX0,"^",7),RELDT=$$NOW^XLFDT
 I FLL="F",'FLLN D   ;Original Fill
 .S DIV=$P($G(^PSRX(IRX,2)),"^",9) I DIV]"",$P($G(^PS(59,DIV,"DISP")),"^",2) D
 ..S PSOPAR=$G(^PS(59,DIV,1)),PSOSITE=DIV
 ..N IRXS K FDA S IRXS=IRX_",",FDA(52,IRXS,31)=RELDT,FDA(52,IRXS,23)=RPHARM
 ..S FDA(52,IRXS,32.1)="@",FDA(52,IRXS,32.2)="@" D FILE^DIE(,"FDA","PSOERR") K FDA
 ..S PSOCPRX=$P(^PSRX(IRX,0),"^"),RXP=IRX D CP^PSOCP S:$G(DIV)']"" DIV=$G(PSOSITE)
 ..D EN^PSOHLSN1(IRX,"ZD"),AUTOREL^PSOBPSUT(IRX,FLLN,RELDT,PSOHSNDC,"A",,30)
 .;else if not auto release
 .E  I $$NDCFMT^PSSNDCUT(PSOHSNDC)'="",$$STATUS^PSOBPSUT(IRX,FLLN)="" D SAVNDC^PSONDCUT(IRX,FLLN,PSOHSNDC)
 I FLL="F",FLLN D   ;Refill
 .S DIV=$P(^PSRX(IRX,1,FLLN,0),"^",9) I DIV]"",$P($G(^PS(59,DIV,"DISP")),"^",2) D
 ..S PSOPAR=$G(^PS(59,DIV,1)),PSOSITE=DIV
 ..N REFIENS K FDA S REFIENS=FLLN_","_IRX_"," S FDA(52.1,REFIENS,17)=RELDT,FDA(52.1,REFIENS,4)=RPHARM
 ..D FILE^DIE(,"FDA") K FDA
 ..N YY S YY=FLLN,PSOCPRX=$P(^PSRX(IRX,0),"^"),RXP=IRX D CP^PSOCP S:$G(DIV)']"" DIV=$G(PSOSITE)
 ..D EN^PSOHLSN1(IRX,"ZD"),AUTOREL^PSOBPSUT(IRX,FLLN,RELDT,PSOHSNDC,"A",,30)
 .;else if not auto release
 .E  I $$NDCFMT^PSSNDCUT(PSOHSNDC)'="",$$STATUS^PSOBPSUT(IRX,FLLN)="" D SAVNDC^PSONDCUT(IRX,FLLN,PSOHSNDC)
 I FLL="P" D   ;Partial Fill
 .S DIV=$P(^PSRX(IRX,"P",FLLN,0),"^",9) I DIV]"",$P($G(^PS(59,DIV,"DISP")),"^",2) D
 ..S PSOPAR=$G(^PS(59,DIV,1)),PSOSITE=DIV
 ..N PARIENS K FDA S PARIENS=FLLN_","_IRX_"," S FDA(52.2,PARIENS,8)=RELDT,FDA(52.2,PARIENS,.05)=RPHARM
 ..D FILE^DIE(,"FDA") K FDA
 S $P(^PSRXR(52.09,PSOS5209,0),"^",16)=RELDT
 Q
 ;