Ignore:
Timestamp:
Dec 4, 2009, 12:11:15 AM (14 years ago)
Author:
George Lilly
Message:

revised back to 6/30/08 version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • WorldVistAEHR/trunk/r/OUTPATIENT_PHARMACY-PSO-APSP-HUIP/PSON52.m

    r613 r623  
    1 PSON52  ;BIR/DSD - files new entries in prescription file ;08/09/93
    2         ;;7.0;OUTPATIENT PHARMACY;**1,16,23,27,32,46,71,111,124,117,131,139,157,143,219,148,239,201,268,260,225**;DEC 1997;Build 29
    3         ;External reference ^PS(55 supported by DBIA 2228
    4         ;External reference to PSOUL^PSSLOCK supported by DBIA 2789
    5         ;External reference to ^XUSEC supported by DBIA 10076
    6         ;External reference SWSTAT^IBBAPI supported by DBIA 4663
    7         ;External reference SAVNDC^PSSNDCUT supported by DBIA 4707
    8 EN(PSOX)        ;Entry Point
    9 START   ;
    10         D:$D(XRTL) T0^%ZOSV ; Start RT Monitor
    11         D INIT G:PSON52("QFLG") END D NFILE Q:$G(PSONEW("DFLG"))  D PS55,DIK
    12         S:$D(XRT0) XRTN=$T(+0) D:$D(XRT0) T1^%ZOSV ; Stop RT Monitor
    13         D FINISH
    14         I $P(^PSRX(PSOX("IRXN"),0),"^",11)="W",$G(^("IB")) S ^PSRX("ACP",$P(^PSRX(PSOX("IRXN"),0),"^",2),$P(^(2),"^",2),0,PSOX("IRXN"))=""
    15 END     D EOJ
    16         Q
    17 INIT    ;
    18         K X,%DT S:$G(PSOID) PSOX("ISSUE DATE")=PSOID
    19         S PSOX("CS")=0
    20         F DEA=1:1 Q:$E(PSODRUG("DEA"),DEA)=""  I $E(+PSODRUG("DEA"),DEA)>1,$E(+PSODRUG("DEA"),DEA)<6 S $P(PSOX("CS"),"^")=1 S:$E(+PSODRUG("DEA"),DEA)=2 $P(PSOX("CS"),"^",2)=1
    21         S PSON52("QFLG")=0,X1=PSOX("ISSUE DATE"),X2=PSOX("DAYS SUPPLY")*(PSOX("# OF REFILLS")+1)\1
    22         I $D(CLOZPAT) S X2=$S(X2=14:14,X2=7:7,1:X2) G DT
    23         S X2=$S(PSOX("DAYS SUPPLY")=X2:X2,+$G(PSOX("CS")):184,+$G(DEA("CS")):184,1:366)
    24         I X2<30 D
    25         . N % S %=$P($G(PSORX("PATIENT STATUS")),"^"),X2=30
    26         . S:%?.N %=$P($G(^PS(53,+%,0)),"^") I %["AUTH ABS" S X2=5
    27 DT      D C^%DTC S PSOX("STOP DATE")=$P(X,".") K X
    28         I PSOX("# OF REFILLS")>0 S X1=PSOX("FILL DATE"),X2=$S((PSOX("DAYS SUPPLY")-10\1)<1:1,1:PSOX("DAYS SUPPLY")-10\1) D C^%DTC S PSOX("NEXT POSSIBLE REFILL")=$P(X,".") K X
    29         S PSOX("TYPE OF RX")=0,PSOX("DISPENSED DATE")=PSOX("FILL DATE") D NOW^%DTC S PSOX("LOGIN DATE")=$S($P($G(OR0),"^",12):$P($G(OR0),"^",12),1:%) K %,X
    30         S PSOX("STATUS")=$S($G(PSOX("STATUS"))]"":PSOX("STATUS"),$D(PSORX("VERIFY")):1,1:0)
    31         S PSOX("COPIES")=$S($G(PSOX("COPIES"))]"":PSOX("COPIES"),1:1)
    32         I $G(PSORX("PHARM"))]"" S PSOX("PHARMACIST")=PSORX("PHARM") K PSORX("PHARM")
    33 INITX   Q
    34         ;
    35 NFILE   I $G(OR0) D  Q:$G(PSONEW("DFLG"))
    36         .D NOOR^PSONEW Q:$G(PSONEW("DFLG"))
    37         .I $G(PSOSIGFL)!($G(PSODRUG("OI"))'=$P(OR0,"^",8)) S PSONEW("CLERK CODE")=DUZ,PSONEW("REMARKS")=$G(PSONEW("REMARKS"))_" CPRS Order #"_$P(OR0,"^")_" Edited."
    38         S DIC="^PSRX(",DLAYGO=52,DIC(0)="L",X=PSOX("RX #") K DD,DO D FILE^DICN S PSOX("IRXN")=+Y K DLAYGO,X,Y,DIC,DD,DO D:+$G(DGI) TECH^PSODGDGI
    39         F PSOX1=0:1 S PSON52=$P($T(DD+PSOX1),";;",2,4) Q:PSON52=""  K PSOY S PSOY=$P(PSON52,";;") I $G(@PSOY)]"" S $P(PSON52(PSOX("IRXN"),$P(PSON52,";;",2)),"^",$P(PSON52,";;",3))=@PSOY
    40         F I=1:1:PSOX("ENT") S ^PSRX(PSOX("IRXN"),6,I,0)=PSOX("DOSE",I)_"^"_$G(PSOX("DOSE ORDERED",I))_"^"_$G(PSOX("UNITS",I))_"^"_$G(PSOX("NOUN",I))_"^" D
    41         .S ^PSRX(PSOX("IRXN"),6,I,0)=^PSRX(PSOX("IRXN"),6,I,0)_$G(PSOX("DURATION",I))_"^"_$G(PSOX("CONJUNCTION",I))_"^"_$G(PSOX("ROUTE",I))_"^"_$G(PSOX("SCHEDULE",I))_"^"_$G(PSOX("VERB",I))
    42         .I $G(PSOX("ODOSE",I))]"" S ^PSRX(PSOX("IRXN"),6,I,1)=PSOX("ODOSE",I)
    43         S ^PSRX(PSOX("IRXN"),6,0)="^52.0113^"_PSOX("ENT")_"^"_PSOX("ENT")
    44         K PSOX1,PSOY
    45         S PSOX1="" F  S PSOX1=$O(PSON52(PSOX("IRXN"),PSOX1)) Q:PSOX1=""  S ^PSRX(PSOX("IRXN"),PSOX1)=$G(PSON52(PSOX("IRXN"),PSOX1))
    46         I $O(PSOX("SIG",0)) D
    47         .S D=0 F  S D=$O(PSOX("SIG",D)) Q:'D  S ^PSRX(PSOX("IRXN"),"INS1",D,0)=PSOX("SIG",D),TP=$G(TP)+1
    48         .S ^PSRX(PSOX("IRXN"),"INS1",0)="^52.0115^"_TP_"^"_TP_"^"_DT_"^^" K TP,D
    49         I $G(PSOX("SINS"))]"" S ^PSRX(PSOX("IRXN"),"INSS")=PSOX("SINS")
    50         I $G(SIGOK) D
    51         .S $P(^PSRX(PSOX("IRXN"),"SIG"),"^",2)=1,^PSRX(PSOX("IRXN"),"SIG1",0)="^52.04A^^"
    52         .S D=0 F  S D=$O(SIG(D)) Q:'D  S ^PSRX(PSOX("IRXN"),"SIG1",D,0)=SIG(D),$P(^PSRX(PSOX("IRXN"),"SIG1",0),"^",3)=+$P(^PSRX(PSOX("IRXN"),"SIG1",0),"^",3)+1,$P(^(0),"^",4)=+$P(^(0),"^",4)+1 Q:'$O(SIG(D))
    53         .K SIG
    54         I $D(PSOINSFL) S ^PSRX(PSOX("IRXN"),"A",0)="^52.3DA^1^1",^PSRX(PSOX("IRXN"),"A",1,0)=DT_"^G^^0^Patient Instructions "_$S(PSOINSFL=1:"",1:"Not ")_"Sent By Provider."
    55         I $G(OR0) S:$P(OR0,"^",24) ^PSRX(PSOX("IRXN"),"PKI")=1
    56         K PSOX1,PSOFINFL,HLDSIG,D,PSOINSFL,D
    57         D:$G(^TMP("PSODAI",$J,0))
    58         .S $P(^PSRX(PSOX("IRXN"),3),"^",6)=1
    59         .I $O(^TMP("PSODAI",$J,0)) S DAI=0 F  S DAI=$O(^TMP("PSODAI",$J,DAI)) Q:'DAI  D
    60         ..S:'$D(^PSRX(PSOX("IRXN"),"DAI",0)) ^PSRX(PSOX("IRXN"),"DAI",0)="^52.03^^" S ^PSRX(PSOX("IRXN"),"DAI",DAI,0)=^TMP("PSODAI",$J,DAI,0)
    61         ..S $P(^PSRX(PSOX("IRXN"),"DAI",0),"^",3)=+$P(^PSRX(PSOX("IRXN"),"DAI",0),"^",3)+1,$P(^(0),"^",4)=+$P(^(0),"^",4)+1
    62         .K ^TMP("PSODAI",$J),DAI
    63         I $G(PSOX("CHCS NUMBER"))'="" S $P(^PSRX(PSOX("IRXN"),"EXT"),"^")=$G(PSOX("CHCS NUMBER"))
    64         I $G(PSOX("EXTERNAL SYSTEM"))'="" S $P(^PSRX(PSOX("IRXN"),"EXT"),"^",2)=$G(PSOX("EXTERNAL SYSTEM"))
    65         I $G(PSOX("NEWCOPAY")) S ^PSRX(PSOX("IRXN"),"IB")=$G(PSOX("NEWCOPAY"))
    66         ;Next line, set SC question based on Copay status?
    67 IBQ     ;I $G(PSOBILL)=2 S ^PSRX(PSOX("IRXN"),"IBQ")=$S($G(PSOX("NEWCOPAY")):0,1:1)
    68         N PSOSCFLD S PSOSCFLD=$S(PSOSCP'="":$G(PSOANSQ("SC")),1:"")_"^"_$G(PSOANSQ("MST"))_"^"_$G(PSOANSQ("VEH"))_"^"_$G(PSOANSQ("RAD"))_"^"_$G(PSOANSQ("PGW"))_"^"_$G(PSOANSQ("HNC"))_"^"_$G(PSOANSQ("CV"))_"^"_$G(PSOANSQ("SHAD"))
    69         I PSOSCP<50&($TR(PSOSCFLD,"^")'="")&($P($G(^PS(53,+$G(PSONEW("PATIENT STATUS")),0)),"^",7)'=1) D
    70         . S ^PSRX(PSOX("IRXN"),"IBQ")=PSOSCFLD K PSOSCFLD  ;don't set if SC % is null or 0, just set it in ICD node
    71         D ICD^PSODIAG
    72         D:$$SWSTAT^IBBAPI() GACT^PSOPFSU0(PSOX("IRXN"),0)
    73         K PSOANSQ,PSOANSQD,PSOX("NEWCOPAY")
    74         L -^PSRX("B",PSOX("IRXN"))
    75         Q
    76         ;
    77 PS55    ;
    78         L +^PS(55,PSODFN,"P"):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3)
    79         S:'$D(^PS(55,PSODFN,"P",0)) ^(0)="^55.03PA^^"
    80         F PSOX1=$P(^PS(55,PSODFN,"P",0),"^",3):1 Q:'$D(^PS(55,PSODFN,"P",PSOX1))
    81         S PSOX("55 IEN")=PSOX1
    82         S ^PS(55,PSODFN,"P",PSOX1,0)=PSOX("IRXN"),$P(^PS(55,PSODFN,"P",0),"^",3,4)=PSOX1_"^"_($P(^PS(55,PSODFN,"P",0),"^",4)+1)
    83         S ^PS(55,PSODFN,"P","A",PSONEW("STOP DATE"),PSOX("IRXN"))=""
    84 PS55X   L -^PS(55,PSODFN,"P")
    85         K PSOX1
    86         Q
    87 DIK     ;
    88         I $D(^XUSEC("PSORPH",DUZ)) S DA=PSOX("IRXN"),DIE=52,DR="41////"_PSOCOU_";S:'X Y=""@1"";42////"_PSOCOUU_";@1" D ^DIE K DIE,DR
    89         K DIK,DA S DIK="^PSRX(",DA=PSOX("IRXN") D IX1^DIK K DIK
    90         S DA=PSOX("IRXN") D ORC^PSORN52C
    91         Q
    92 FINISH  ;
    93 ANQ     I $G(ANQDATA)]"" D NOW^%DTC G:$D(^PS(52.52,"B",%)) ANQ D
    94         .K DD,DO S DIC="^PS(52.52,",DIC(0)="L",DLAYGO=52.52,X=% D FILE^DICN K DIC,DLAYGO,DD,DO
    95         .S ^PS(52.52,+Y,0)=$P(Y,"^",2)_"^"_PSOX("IRXN")_"^"_ANQDATA,^PS(52.52,"A",PSOX("IRXN"),+Y)="" K ANQDATA,X,Y,%,ANQREM
    96         G:PSOX("STATUS")=4 FINISHP
    97         I $D(PSORX("VERIFY")) D  G FINISHX
    98         .K DIC,DLAYGO,DINUM,DIADD,X,DD,DO S DIC="^PS(52.4,",DLAYGO=52.4,DINUM=PSOX("IRXN"),DIC(0)="ML",X=PSOX("IRXN")
    99         .D FILE^DICN K DD,DO,DIC,DLAYGO,DINUM S ^PS(52.4,PSOX("IRXN"),0)=PSOX("IRXN")_"^"_PSODFN_"^"_DUZ_"^"_"^"_$E(PSOX("LOGIN DATE"),1,7)_"^"_PSOX("IRXN")_"^"_PSOX("STOP DATE")
    100         .K DIK,DA S DIK="^PS(52.4,",DA=PSOX("IRXN") D IX^DIK K DIK,DA
    101         ;
    102         I PSOX("FILL DATE")>DT,$P(PSOPAR,"^",6) S DA=PSOX("IRXN"),RXFL(PSOX("IRXN"))=0 D SUS^PSORXL K DA G FINISHX
    103         ;
    104         ; - Calling ECME for claims generation and transmission / REJECT handling
    105         N ACTION,PSOERX
    106         S PSOERX=PSOX("IRXN")
    107         I $$SUBMIT^PSOBPSUT(PSOERX,0) D  I ACTION="Q"!(ACTION="^") Q
    108         . S ACTION="" D ECMESND^PSOBPSU1(PSOERX,0,PSOX("FILL DATE"),"OF")
    109         . I $$FIND^PSOREJUT(PSOERX,0) D
    110         . . S ACTION=$$HDLG^PSOREJU1(PSOERX,0,"79,88","OF","IOQ","I")
    111         . I $$STATUS^PSOBPSUT(PSOERX,0)="E PAYABLE" D
    112         . . D SAVNDC^PSSNDCUT(+$$GET1^DIQ(52,PSOERX,6,"I"),$G(PSOSITE),$$GETNDC^PSONDCUT(PSOERX,0))
    113         ;
    114 FINISHP ;
    115         I $G(PSORX("PSOL",1))']"" S PSORX("PSOL",1)=PSOX("IRXN")_",",RXFL(PSOX("IRXN"))=0 G FINISHX
    116         F PSOX1=0:0 S PSOX1=$O(PSORX("PSOL",PSOX1)) Q:'PSOX1  S PSOX2=PSOX1
    117         I $L(PSORX("PSOL",PSOX2))+$L(PSOX("IRXN"))<220 S PSORX("PSOL",PSOX2)=PSORX("PSOL",PSOX2)_PSOX("IRXN")_","
    118         E  S PSORX("PSOL",PSOX2+1)=PSOX("IRXN")_","
    119         S RXFL(PSOX("IRXN"))=0
    120 FINISHX ;call to build Rx array for bingo board
    121         I $G(PSORX("MAIL/WINDOW"))["W" S BINGCRT=1,BINGRTE="W",BBFLG=1 D BBRX^PSORN52C
    122         K PSOX1,PSOX2
    123         Q
    124 EOJ     ;
    125         ;B xref locked in routine PSONRXN
    126         L -^PSRX("B",PSOX("IRXN")) K OTHDOS,DA,PSON52,PSOPRC,RTE,SCH,PSOX("INS"),PSONEW("INS"),PSORXED("INS"),PSONEW("ENT"),PSORXED("ENT"),OLENT
    127         D PSOUL^PSSLOCK(PSOX("IRXN"))
    128         Q
    129         ;
    130         ;;PSOX("SIG");;SIG;;1
    131 DD      ;;PSOX("RX #");;0;;1
    132         ;;PSOX("ISSUE DATE");;0;;13
    133         ;;PSODFN;;0;;2
    134         ;;PSOX("PATIENT STATUS");;0;;3
    135         ;;PSOX("PROVIDER");;0;;4
    136         ;;PSOX("CLINIC");;0;;5
    137         ;;PSODRUG("IEN");;0;;6
    138         ;;PSODRUG("TRADE NAME");;TN;;1
    139         ;;PSOX("QTY");;0;;7
    140         ;;PSOX("DAYS SUPPLY");;0;;8
    141         ;;PSOX("# OF REFILLS");;0;;9
    142         ;;PSOX("COPIES");;0;;18
    143         ;;PSOX("MAIL/WINDOW");;0;;11
    144         ;;PSOX("REMARKS");;3;;7
    145         ;;PSOX("CLERK CODE");;0;;16
    146         ;;PSODRUG("COST");;0;;17
    147         ;;PSOSITE;;2;;9
    148         ;;PSOX("LOGIN DATE");;2;;1
    149         ;;PSOX("FILL DATE");;2;;2
    150         ;;PSOX("PHARMACIST");;2;;3
    151         ;;PSOX("LOT #");;2;;4
    152         ;;PSOX("DISPENSED DATE");;2;;5
    153         ;;PSOX("STOP DATE");;2;;6
    154         ;;PSODRUG("NDC");;2;;7
    155         ;;PSODRUG("DAW");;EPH;;1
    156         ;;PSODRUG("MANUFACTURER");;2;;8
    157         ;;PSOX("EXPIRATION DATE");;2;;11
    158         ;;PSOX("GENERIC PROVIDER");;2;;12
    159         ;;PSOX("RELEASED DATE/TIME");;2;;13
    160         ;;PSOX("METHOD OF PICK-UP");;MP;;1
    161         ;;PSOX("STATUS");;STA;;1
    162         ;;PSOX("LAST DISPENSED DATE");;3;;1
    163         ;;PSOX("NEXT POSSIBLE REFILL");;3;;2
    164         ;;PSOX("COSIGNING PROVIDER");;3;;3
    165         ;;PSOX("TYPE OF RX");;TYPE;;1
    166         ;;PSOX("SAND");;SAND;;1
    167         ;;PSOX("POE");;POE;;1
    168         ;;PSOX("INS");;INS;;1
     1PSON52 ;BIR/DSD - files new entries in prescription file ;08/09/93
     2 ;;7.0;OUTPATIENT PHARMACY;**1,16,23,27,32,46,71,111,124,117,131,139,157,143,219,148,239,201,268,208**;DEC 1997;Build 39
     3 ; Modified from FOIA VISTA,
     4 ; Copyright (C) 2007 WorldVistA
     5 ;
     6 ; This program is free software; you can redistribute it and/or modify
     7 ; it under the terms of the GNU General Public License as published by
     8 ; the Free Software Foundation; either version 2 of the License, or
     9 ; (at your option) any later version.
     10 ;
     11 ; This program is distributed in the hope that it will be useful,
     12 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
     13 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14 ; GNU General Public License for more details.
     15 ;
     16 ; You should have received a copy of the GNU General Public License
     17 ; along with this program; if not, write to the Free Software
     18 ; Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
     19 ;External reference ^PS(55 supported by DBIA 2228
     20 ;External reference to PSOUL^PSSLOCK supported by DBIA 2789
     21 ;External reference to ^XUSEC supported by DBIA 10076
     22 ;External reference SWSTAT^IBBAPI supported by DBIA 4663
     23EN(PSOX) ;Entry Point
     24START ;
     25 D:$D(XRTL) T0^%ZOSV ; Start RT Monitor
     26 D INIT G:PSON52("QFLG") END D NFILE Q:$G(PSONEW("DFLG"))  D PS55,DIK
     27 S:$D(XRT0) XRTN=$T(+0) D:$D(XRT0) T1^%ZOSV ; Stop RT Monitor
     28 D FINISH
     29 I $P(^PSRX(PSOX("IRXN"),0),"^",11)="W",$G(^("IB")) S ^PSRX("ACP",$P(^PSRX(PSOX("IRXN"),0),"^",2),$P(^(2),"^",2),0,PSOX("IRXN"))=""
     30END D EOJ
     31 Q
     32INIT ;
     33 K X,%DT S:$G(PSOID) PSOX("ISSUE DATE")=PSOID
     34 S PSOX("CS")=0
     35 F DEA=1:1 Q:$E(PSODRUG("DEA"),DEA)=""  I $E(+PSODRUG("DEA"),DEA)>1,$E(+PSODRUG("DEA"),DEA)<6 S $P(PSOX("CS"),"^")=1 S:$E(+PSODRUG("DEA"),DEA)=2 $P(PSOX("CS"),"^",2)=1
     36 S PSON52("QFLG")=0,X1=PSOX("ISSUE DATE"),X2=PSOX("DAYS SUPPLY")*(PSOX("# OF REFILLS")+1)\1
     37 I $D(CLOZPAT) S X2=$S(X2=14:14,X2=7:7,1:X2) G DT
     38 S X2=$S(PSOX("DAYS SUPPLY")=X2:X2,+$G(PSOX("CS")):184,+$G(DEA("CS")):184,1:366)
     39 I X2<30 D
     40 . N % S %=$P($G(PSORX("PATIENT STATUS")),"^"),X2=30
     41 . S:%?.N %=$P($G(^PS(53,+%,0)),"^") I %["AUTH ABS" S X2=5
     42DT D C^%DTC S PSOX("STOP DATE")=$P(X,".") K X
     43 I PSOX("# OF REFILLS")>0 S X1=PSOX("FILL DATE"),X2=$S((PSOX("DAYS SUPPLY")-10\1)<1:1,1:PSOX("DAYS SUPPLY")-10\1) D C^%DTC S PSOX("NEXT POSSIBLE REFILL")=$P(X,".") K X
     44 S PSOX("TYPE OF RX")=0,PSOX("DISPENSED DATE")=PSOX("FILL DATE") D NOW^%DTC S PSOX("LOGIN DATE")=$S($P($G(OR0),"^",12):$P($G(OR0),"^",12),1:%) K %,X
     45 S PSOX("STATUS")=$S($G(PSOX("STATUS"))]"":PSOX("STATUS"),$D(PSORX("VERIFY")):1,1:0)
     46 S PSOX("COPIES")=$S($G(PSOX("COPIES"))]"":PSOX("COPIES"),1:1)
     47 I $G(PSORX("PHARM"))]"" S PSOX("PHARMACIST")=PSORX("PHARM") K PSORX("PHARM")
     48INITX Q
     49 ;
     50NFILE I $G(OR0) D  Q:$G(PSONEW("DFLG"))
     51 .D NOOR^PSONEW Q:$G(PSONEW("DFLG"))
     52 .I $G(PSOSIGFL)!($G(PSODRUG("OI"))'=$P(OR0,"^",8)) S PSONEW("CLERK CODE")=DUZ,PSONEW("REMARKS")=$G(PSONEW("REMARKS"))_" CPRS Order #"_$P(OR0,"^")_" Edited."
     53 S DIC="^PSRX(",DLAYGO=52,DIC(0)="L",X=PSOX("RX #") K DD,DO D FILE^DICN S PSOX("IRXN")=+Y K DLAYGO,X,Y,DIC,DD,DO D:+$G(DGI) TECH^PSODGDGI
     54 F PSOX1=0:1 S PSON52=$P($T(DD+PSOX1),";;",2,4) Q:PSON52=""  K PSOY S PSOY=$P(PSON52,";;") I $G(@PSOY)]"" S $P(PSON52(PSOX("IRXN"),$P(PSON52,";;",2)),"^",$P(PSON52,";;",3))=@PSOY
     55 F I=1:1:PSOX("ENT") S ^PSRX(PSOX("IRXN"),6,I,0)=PSOX("DOSE",I)_"^"_$G(PSOX("DOSE ORDERED",I))_"^"_$G(PSOX("UNITS",I))_"^"_$G(PSOX("NOUN",I))_"^" D
     56 .S ^PSRX(PSOX("IRXN"),6,I,0)=^PSRX(PSOX("IRXN"),6,I,0)_$G(PSOX("DURATION",I))_"^"_$G(PSOX("CONJUNCTION",I))_"^"_$G(PSOX("ROUTE",I))_"^"_$G(PSOX("SCHEDULE",I))_"^"_$G(PSOX("VERB",I))
     57 .I $G(PSOX("ODOSE",I))]"" S ^PSRX(PSOX("IRXN"),6,I,1)=PSOX("ODOSE",I)
     58 S ^PSRX(PSOX("IRXN"),6,0)="^52.0113^"_PSOX("ENT")_"^"_PSOX("ENT")
     59 K PSOX1,PSOY
     60 S PSOX1="" F  S PSOX1=$O(PSON52(PSOX("IRXN"),PSOX1)) Q:PSOX1=""  S ^PSRX(PSOX("IRXN"),PSOX1)=$G(PSON52(PSOX("IRXN"),PSOX1))
     61 I $O(PSOX("SIG",0)) D
     62 .S D=0 F  S D=$O(PSOX("SIG",D)) Q:'D  S ^PSRX(PSOX("IRXN"),"INS1",D,0)=PSOX("SIG",D),TP=$G(TP)+1
     63 .S ^PSRX(PSOX("IRXN"),"INS1",0)="^52.0115^"_TP_"^"_TP_"^"_DT_"^^" K TP,D
     64 I $G(PSOX("SINS"))]"" S ^PSRX(PSOX("IRXN"),"INSS")=PSOX("SINS")
     65 I $G(SIGOK) D
     66 .S $P(^PSRX(PSOX("IRXN"),"SIG"),"^",2)=1,^PSRX(PSOX("IRXN"),"SIG1",0)="^52.04A^^"
     67 .S D=0 F  S D=$O(SIG(D)) Q:'D  S ^PSRX(PSOX("IRXN"),"SIG1",D,0)=SIG(D),$P(^PSRX(PSOX("IRXN"),"SIG1",0),"^",3)=+$P(^PSRX(PSOX("IRXN"),"SIG1",0),"^",3)+1,$P(^(0),"^",4)=+$P(^(0),"^",4)+1 Q:'$O(SIG(D))
     68 .K SIG
     69 I $D(PSOINSFL) S ^PSRX(PSOX("IRXN"),"A",0)="^52.3DA^1^1",^PSRX(PSOX("IRXN"),"A",1,0)=DT_"^G^^0^Patient Instructions "_$S(PSOINSFL=1:"",1:"Not ")_"Sent By Provider."
     70 I $G(OR0) S:$P(OR0,"^",24) ^PSRX(PSOX("IRXN"),"PKI")=1
     71 K PSOX1,PSOFINFL,HLDSIG,D,PSOINSFL,D
     72 D:$G(^TMP("PSODAI",$J,0))
     73 .S $P(^PSRX(PSOX("IRXN"),3),"^",6)=1
     74 .I $O(^TMP("PSODAI",$J,0)) S DAI=0 F  S DAI=$O(^TMP("PSODAI",$J,DAI)) Q:'DAI  D
     75 ..S:'$D(^PSRX(PSOX("IRXN"),"DAI",0)) ^PSRX(PSOX("IRXN"),"DAI",0)="^52.03^^" S ^PSRX(PSOX("IRXN"),"DAI",DAI,0)=^TMP("PSODAI",$J,DAI,0)
     76 ..S $P(^PSRX(PSOX("IRXN"),"DAI",0),"^",3)=+$P(^PSRX(PSOX("IRXN"),"DAI",0),"^",3)+1,$P(^(0),"^",4)=+$P(^(0),"^",4)+1
     77 .K ^TMP("PSODAI",$J),DAI
     78 I $G(PSOX("CHCS NUMBER"))'="" S $P(^PSRX(PSOX("IRXN"),"EXT"),"^")=$G(PSOX("CHCS NUMBER"))
     79 I $G(PSOX("EXTERNAL SYSTEM"))'="" S $P(^PSRX(PSOX("IRXN"),"EXT"),"^",2)=$G(PSOX("EXTERNAL SYSTEM"))
     80 I $G(PSOX("NEWCOPAY")) S ^PSRX(PSOX("IRXN"),"IB")=$G(PSOX("NEWCOPAY"))
     81 ;Next line, set SC question based on Copay status?
     82IBQ ;I $G(PSOBILL)=2 S ^PSRX(PSOX("IRXN"),"IBQ")=$S($G(PSOX("NEWCOPAY")):0,1:1)
     83 I $G(PSOAFYN)="Y" S PSOSCP="" ;vfah
     84 N PSOSCFLD S PSOSCFLD=$S(PSOSCP'="":$G(PSOANSQ("SC")),1:"")_"^"_$G(PSOANSQ("MST"))_"^"_$G(PSOANSQ("VEH"))_"^"_$G(PSOANSQ("RAD"))_"^"_$G(PSOANSQ("PGW"))_"^"_$G(PSOANSQ("HNC"))_"^"_$G(PSOANSQ("CV"))
     85 I PSOSCP<50&($TR(PSOSCFLD,"^")'="")&($P($G(^PS(53,+$G(PSONEW("PATIENT STATUS")),0)),"^",7)'=1) D
     86 . S ^PSRX(PSOX("IRXN"),"IBQ")=PSOSCFLD K PSOSCFLD  ;don't set if SC % is null or 0, just set it in ICD node
     87 D ICD^PSODIAG
     88 D:$$SWSTAT^IBBAPI() GACT^PSOPFSU0(PSOX("IRXN"),0)
     89 K PSOANSQ,PSOANSQD,PSOX("NEWCOPAY")
     90 L -^PSRX("B",PSOX("IRXN"))
     91 Q
     92 ;
     93PS55 ;
     94 L +^PS(55,PSODFN,"P"):$S(+$G(^DD("DILOCKTM"))>0:+^DD("DILOCKTM"),1:3)
     95 S:'$D(^PS(55,PSODFN,"P",0)) ^(0)="^55.03PA^^"
     96 F PSOX1=$P(^PS(55,PSODFN,"P",0),"^",3):1 Q:'$D(^PS(55,PSODFN,"P",PSOX1))
     97 S PSOX("55 IEN")=PSOX1
     98 S ^PS(55,PSODFN,"P",PSOX1,0)=PSOX("IRXN"),$P(^PS(55,PSODFN,"P",0),"^",3,4)=PSOX1_"^"_($P(^PS(55,PSODFN,"P",0),"^",4)+1)
     99 S ^PS(55,PSODFN,"P","A",PSONEW("STOP DATE"),PSOX("IRXN"))=""
     100PS55X L -^PS(55,PSODFN,"P")
     101 K PSOX1
     102 Q
     103DIK ;
     104 I $D(^XUSEC("PSORPH",DUZ)) S DA=PSOX("IRXN"),DIE=52,DR="41////"_PSOCOU_";S:'X Y=""@1"";42////"_PSOCOUU_";@1" D ^DIE K DIE,DR
     105 K DIK,DA S DIK="^PSRX(",DA=PSOX("IRXN") D IX1^DIK K DIK
     106 S DA=PSOX("IRXN") D ORC^PSORN52C
     107 Q
     108FINISH ;
     109ANQ I $G(ANQDATA)]"" D NOW^%DTC G:$D(^PS(52.52,"B",%)) ANQ D
     110 .K DD,DO S DIC="^PS(52.52,",DIC(0)="L",DLAYGO=52.52,X=% D FILE^DICN K DIC,DLAYGO,DD,DO
     111 .S ^PS(52.52,+Y,0)=$P(Y,"^",2)_"^"_PSOX("IRXN")_"^"_ANQDATA,^PS(52.52,"A",PSOX("IRXN"),+Y)="" K ANQDATA,X,Y,%,ANQREM
     112 G:PSOX("STATUS")=4 FINISHP
     113 I $D(PSORX("VERIFY")) D  G FINISHX
     114 .K DIC,DLAYGO,DINUM,DIADD,X,DD,DO S DIC="^PS(52.4,",DLAYGO=52.4,DINUM=PSOX("IRXN"),DIC(0)="ML",X=PSOX("IRXN")
     115 .D FILE^DICN K DD,DO,DIC,DLAYGO,DINUM S ^PS(52.4,PSOX("IRXN"),0)=PSOX("IRXN")_"^"_PSODFN_"^"_DUZ_"^"_"^"_$E(PSOX("LOGIN DATE"),1,7)_"^"_PSOX("IRXN")_"^"_PSOX("STOP DATE")
     116 .K DIK,DA S DIK="^PS(52.4,",DA=PSOX("IRXN") D IX^DIK K DIK,DA
     117 ;
     118 I PSOX("FILL DATE")>DT,$P(PSOPAR,"^",6) S DA=PSOX("IRXN"),RXFL(PSOX("IRXN"))=0 D SUS^PSORXL K DA G FINISHX
     119 ;
     120 ; - Calling ECME for claims generation and transmission / REJECT handling
     121 N ACTION
     122 I $$SUBMIT^PSOBPSUT(PSOX("IRXN"),0) D  I ACTION="Q"!(ACTION="^") Q
     123 . S ACTION="" D ECMESND^PSOBPSU1(PSOX("IRXN"),0,PSOX("FILL DATE"),"OF")
     124 . I $$FIND^PSOREJUT(PSOX("IRXN"),0) D
     125 . . S ACTION=$$HDLG^PSOREJU1(PSOX("IRXN"),0,"79,88","OF","IOQ","I")
     126 ;
     127FINISHP ;
     128 I $G(PSORX("PSOL",1))']"" S PSORX("PSOL",1)=PSOX("IRXN")_",",RXFL(PSOX("IRXN"))=0 G FINISHX
     129 F PSOX1=0:0 S PSOX1=$O(PSORX("PSOL",PSOX1)) Q:'PSOX1  S PSOX2=PSOX1
     130 I $L(PSORX("PSOL",PSOX2))+$L(PSOX("IRXN"))<220 S PSORX("PSOL",PSOX2)=PSORX("PSOL",PSOX2)_PSOX("IRXN")_","
     131 E  S PSORX("PSOL",PSOX2+1)=PSOX("IRXN")_","
     132 S RXFL(PSOX("IRXN"))=0
     133FINISHX ;call to build Rx array for bingo board
     134 I $G(PSORX("MAIL/WINDOW"))["W" S BINGCRT=1,BINGRTE="W",BBFLG=1 D BBRX^PSORN52C
     135 K PSOX1,PSOX2
     136 Q
     137EOJ ;
     138 ;B xref locked in routine PSONRXN
     139 L -^PSRX("B",PSOX("IRXN")) K OTHDOS,DA,PSON52,PSOPRC,RTE,SCH,PSOX("INS"),PSONEW("INS"),PSORXED("INS"),PSONEW("ENT"),PSORXED("ENT"),OLENT
     140 D PSOUL^PSSLOCK(PSOX("IRXN"))
     141 Q
     142 ;
     143 ;;PSOX("SIG");;SIG;;1
     144DD ;;PSOX("RX #");;0;;1
     145 ;;PSOX("ISSUE DATE");;0;;13
     146 ;;PSODFN;;0;;2
     147 ;;PSOX("PATIENT STATUS");;0;;3
     148 ;;PSOX("PROVIDER");;0;;4
     149 ;;PSOX("CLINIC");;0;;5
     150 ;;PSODRUG("IEN");;0;;6
     151 ;;PSODRUG("TRADE NAME");;TN;;1
     152 ;;PSOX("QTY");;0;;7
     153 ;;PSOX("DAYS SUPPLY");;0;;8
     154 ;;PSOX("# OF REFILLS");;0;;9
     155 ;;PSOX("COPIES");;0;;18
     156 ;;PSOX("MAIL/WINDOW");;0;;11
     157 ;;PSOX("REMARKS");;3;;7
     158 ;;PSOX("CLERK CODE");;0;;16
     159 ;;PSODRUG("COST");;0;;17
     160 ;;PSOSITE;;2;;9
     161 ;;PSOX("LOGIN DATE");;2;;1
     162 ;;PSOX("FILL DATE");;2;;2
     163 ;;PSOX("PHARMACIST");;2;;3
     164 ;;PSOX("LOT #");;2;;4
     165 ;;PSOX("DISPENSED DATE");;2;;5
     166 ;;PSOX("STOP DATE");;2;;6
     167 ;;PSODRUG("NDC");;2;;7
     168 ;;PSODRUG("DAW");;EPH;;1
     169 ;;PSODRUG("MANUFACTURER");;2;;8
     170 ;;PSOX("EXPIRATION DATE");;2;;11
     171 ;;PSOX("GENERIC PROVIDER");;2;;12
     172 ;;PSOX("RELEASED DATE/TIME");;2;;13
     173 ;;PSOX("METHOD OF PICK-UP");;MP;;1
     174 ;;PSOX("STATUS");;STA;;1
     175 ;;PSOX("LAST DISPENSED DATE");;3;;1
     176 ;;PSOX("NEXT POSSIBLE REFILL");;3;;2
     177 ;;PSOX("COSIGNING PROVIDER");;3;;3
     178 ;;PSOX("TYPE OF RX");;TYPE;;1
     179 ;;PSOX("SAND");;SAND;;1
     180 ;;PSOX("POE");;POE;;1
     181 ;;PSOX("INS");;INS;;1
Note: See TracChangeset for help on using the changeset viewer.