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

PSBRPC1.m

Go to the documentation of this file.
  1. PSBRPC1 ;BIRMINGHAM/VN - BCMA RPC BROKER CALLS ;29-May-2012 14:22;PLS
  1. ;;3.0;BAR CODE MED ADMIN;**42,1015**;23-May-2012 13:30;Build 62
  1. ;
  1. ; Reference/IA
  1. ; ^%ZIS/812
  1. ; ^XUSEC/10076
  1. ; File 200/10060
  1. ;
  1. ; Modified - IHS/MSC/PLS - 09/19/2007 - Line DEVICE+17 - Added OTH as a valid device type
  1. DEVICE(RESULTS,FROM,DIR) ;
  1. ;
  1. ; RPC: PSB DEVICE
  1. ;
  1. ; Return a subset of entries from the Device file
  1. ;
  1. ; .LST(n)=IEN;Name^DisplayName^Location^RMar^PLen
  1. ; FROM=text to $O from, DIR=$O direction
  1. K RESULTS
  1. N I,IEN,SHOW,X S I=0,CNT=20
  1. I FROM["<" S FROM=$RE($P($RE(FROM),"< ",2))
  1. F Q:I'<CNT S FROM=$O(^%ZIS(1,"B",FROM),DIR) Q:FROM="" D
  1. . S IEN=0 F S IEN=$O(^%ZIS(1,"B",FROM,IEN)) Q:'IEN D
  1. .. N X0,X1,X90,X91,X95,XTYPE,XSTYPE,XTIME,%A,%X,POP
  1. .. Q:'$D(^%ZIS(1,IEN,0))
  1. .. S X0=$G(^%ZIS(1,IEN,0)),X1=$G(^(1)),X90=$G(^(90)),X91=$G(^(91)),X95=$G(^(95)),XSTYPE=$G(^("SUBTYPE")),XTIME=$G(^("TIME")),XTYPE=$G(^("TYPE"))
  1. .. I $E($G(^%ZIS(2,+XSTYPE,0)))'="P" Q ;Printers only
  1. .. S X=$P(XTYPE,"^") ;Device Types
  1. .. I $G(DUZ("AG"))="V",X'="TRM",X'="HG",X'="HFS",X'="CHAN" Q
  1. .. ;I $G(DUZ("AG"))="I",X'="OTH" Q ;IHS/MSC/PLS - 05/23/2012 - corrected the device check statement
  1. .. I $G(DUZ("AG"))="I",X'="TRM",X'="HG",X'="HFS",X'="CHAN",X'="OTH" Q ;Device Types
  1. .. S X=X0 I ($P(X,U,2)="0")!($P(X,U,12)=2) Q ;Queuing allowed
  1. .. S X=+X90 I X,(X'>DT) Q ;Out of Service
  1. .. I XTIME]"" S %A=$P(XTIME,"^"),%X=$P($H,",",2),%=%X\60#60+(%X\3600*100),%X=$P(%A,"-",2) I %X'<%A&(%'>%X&(%'<%A))!(%X<%A&(%'<%A!(%'>%X))) Q ;Prohibited Times
  1. .. S POP=0
  1. .. I X95]"" S %X=$G(DUZ(0)) I %X'="@" S POP=1 F %A=1:1:$L(%X) I X95[$E(%X,%A) S POP=0 Q
  1. .. Q:POP ;Security check
  1. .. S SHOW=$P(X0,U) I SHOW'=FROM S SHOW=FROM_" <"_SHOW_">"
  1. .. S I=I+1,RESULTS(I)=IEN_";"_$P(X0,U)_U_SHOW_U_$P(X1,U)_U_$P(X91,U)_U_$P(X91,U,3)
  1. .. S RESULTS(0)=I
  1. I '$D(RESULTS(0)) S RESULTS(0)=1,RESULTS(1)="-1^No printers on file"
  1. Q
  1. GPROV(RESULTS,DUMMY) ;
  1. K ^TMP("PSB",$J)
  1. S RESULTS=$NAME(^TMP("PSB",$J)),PSBCNT=1,^TMP("PSB",$J,0)=0
  1. D NOW^%DTC
  1. S X="" F S X=$O(^XUSEC("PROVIDER",X)) Q:X="" D
  1. .S PSBIACT=$$GET1^DIQ(200,X_",",53.4,"I") I PSBIACT'="",+PSBIACT'<% Q ;if Inactive date and date is less than now Q
  1. .S PSBTERM=$$GET1^DIQ(200,X_",",9.2,"I") I PSBTERM'="",+PSBTERM'<% Q ;if termination date and date is less than now Q
  1. .Q:'$$GET1^DIQ(200,X_",",53.1,"I") ;is authorized to write med orders
  1. .Q:'$$GET1^DIQ(200,X_",",53.2) ;must have DEA#
  1. .S ^TMP("PSBL",$J,$$GET1^DIQ(200,X_",",.01),X)=""
  1. S X="^TMP(""PSBL"","_$J_")",PSBCNT=1,^TMP("PSB",$J,0)=0
  1. F S X=$Q(@X) Q:$QS(X,1)'="PSBL" S ^TMP("PSB",$J,PSBCNT)=$QS(X,3)_"^"_$QS(X,4),^TMP("PSB",$J,0)=PSBCNT,PSBCNT=PSBCNT+1
  1. K ^TMP("PSBL",$J),PSBIACT,PSBTERM,PSBAUTH,PSBCNT,DUMMY