| 1 | ALPBIND ;OIFO-DALLAS/SED/KC/MW  BCMA-BCBU INPT TO HL7 INIT ;5/2/2002 | 
|---|
| 2 | ;;3.0;BAR CODE MED ADMIN;**8**;Mar 2004 | 
|---|
| 3 | ; | 
|---|
| 4 | ; Reference/IA | 
|---|
| 5 | ; DPT/10035 | 
|---|
| 6 | ; DIC(42/10039 | 
|---|
| 7 | ; DIC(42/2440 | 
|---|
| 8 | ; EN^PSJBCBU/3876 | 
|---|
| 9 | Q | 
|---|
| 10 | OPT ;Entry point for the option | 
|---|
| 11 | ;Select Workstations assigned to Default. | 
|---|
| 12 | DFT K ALPHLL,DIR,ALPDIV,DTOUT,DUOUT,DIRUT,DIROUT | 
|---|
| 13 | D GET^ALPBPARM(.ALPHLL,"") | 
|---|
| 14 | I '$D(ALPHLL) W !,"No workstations defined for default " G EXIT | 
|---|
| 15 | D ALLWKS | 
|---|
| 16 | ;D:'$D(DIRUT) QUE | 
|---|
| 17 | D QUE | 
|---|
| 18 | G EXIT | 
|---|
| 19 | ; | 
|---|
| 20 | ALLWKS ;If no then set allow the user to select the workstation | 
|---|
| 21 | K DTOUT,DUOUT,DIRUT,DIROUT,DIR | 
|---|
| 22 | S DIR(0)="Y",DIR("B")="YES" | 
|---|
| 23 | S DIR("A")="Enter Yes or No" | 
|---|
| 24 | S DIR("A",1)="Include all workstations" | 
|---|
| 25 | D ^DIR | 
|---|
| 26 | I $D(DIRUT) Q | 
|---|
| 27 | S ALPWKS=+Y | 
|---|
| 28 | I +ALPWKS>0 Q | 
|---|
| 29 | ; | 
|---|
| 30 | WRKSTN ;Now select which workstations to be initialized | 
|---|
| 31 | K ALPSCRN,ALPBANS | 
|---|
| 32 | ;Set up screen | 
|---|
| 33 | S ALP=0 F  S ALP=$O(ALPHLL("LINKS",ALP))  Q:+ALP'>0  D | 
|---|
| 34 | . S ALPSCRN($P(ALPHLL("LINKS",ALP),U,2),ALP)=ALPHLL("LINKS",ALP) | 
|---|
| 35 | K ALPHLL | 
|---|
| 36 | F  D LP Q:$D(DIRUT) | 
|---|
| 37 | ;I $D(DIRUT)&($D(ALPHLL)) W !!,"No Selected Workstations" G ALLWKS | 
|---|
| 38 | I '$D(ALPBANS)!$D(ALPHLL) W !!,"No Selected Workstations" G ALLWKS | 
|---|
| 39 | Q:'$D(ALPBANS) | 
|---|
| 40 | S ALP="",ALPCNT=1 | 
|---|
| 41 | F  S ALP=$O(ALPBANS(ALP)) Q:ALP=""  D | 
|---|
| 42 | . S ALPHLL("LINKS",ALPCNT)=ALPSCRN(ALP,$O(ALPSCRN(ALP,0))) | 
|---|
| 43 | . S ALPCNT=ALPCNT+1 | 
|---|
| 44 | K ALPSCRN,ALPBANS | 
|---|
| 45 | Q | 
|---|
| 46 | ; | 
|---|
| 47 | LP ;Multiple entries | 
|---|
| 48 | K DIR,DTOUT,DUOUT,DIRUT,DIROUT | 
|---|
| 49 | S DIR(0)="PO^870:EMZ",DIR("A")="Select WorkStation Link " | 
|---|
| 50 | S DIR("?")="Answer with WorkStation Link to update " | 
|---|
| 51 | S DIR("S")="I $D(ALPSCRN($P(^HLCS(870,+Y,0),U,1)))" | 
|---|
| 52 | D ^DIR | 
|---|
| 53 | Q:$D(DIRUT) | 
|---|
| 54 | S ALPBANS($P(Y,U,2),+Y)="" | 
|---|
| 55 | W #,!!,"Selected Workstations",!! | 
|---|
| 56 | S ALPB="" | 
|---|
| 57 | F ALP=1:1 S ALPB=$O(ALPBANS(ALPB)) Q:ALPB=""  D | 
|---|
| 58 | .W ?$S(ALP#2:1,1:40),ALPB | 
|---|
| 59 | .W:ALP#2'>0 ! | 
|---|
| 60 | Q | 
|---|
| 61 | ; | 
|---|
| 62 | QUE ;Que the job | 
|---|
| 63 | ;W !,"QUE" | 
|---|
| 64 | S ZTRTN="EN^ALPBIND" | 
|---|
| 65 | S ZTDESC="PSB - Initialize Default Contingency Workstation" | 
|---|
| 66 | S ZTIO="",ZTSAVE("ALPWKS")="" | 
|---|
| 67 | I $D(ALPHLL) S ZTSAVE("ALPHLL(")="" | 
|---|
| 68 | D ^%ZTLOAD | 
|---|
| 69 | W:$D(ZTSK) !,ZTSK | 
|---|
| 70 | K ZTIO,ZTDESC,ZTRTN,ZTSK | 
|---|
| 71 | Q | 
|---|
| 72 | EN ;Loop through the inpatient list. | 
|---|
| 73 | Q:'$D(ALPHLL) | 
|---|
| 74 | S ALPDTS=$$FMTE^XLFDT($$NOW^XLFDT) | 
|---|
| 75 | K ALPSCR | 
|---|
| 76 | S ALPSTOP=0,ALPOK=1 | 
|---|
| 77 | S ALPCN="" | 
|---|
| 78 | F  S ALPCN=$O(^DPT("CN",ALPCN)) Q:ALPCN=""!(ALPSTOP)  D | 
|---|
| 79 | . ;DIVISION SCREEN HERE | 
|---|
| 80 | . S ALPCNI=$O(^DIC(42,"B",ALPCN,0)) | 
|---|
| 81 | . Q:+ALPCNI'>0  ;Quit if I can't decifer the Ward Location | 
|---|
| 82 | . S ALPDIV=$P($G(^DIC(42,ALPCNI,0)),U,11) | 
|---|
| 83 | . ;Check to see is the Division has Machines defined to it. | 
|---|
| 84 | . ;if it does then it is not to go to default | 
|---|
| 85 | . K ALPTEST | 
|---|
| 86 | . D GET^ALPBPARM(.ALPTEST,ALPDIV,1) | 
|---|
| 87 | . Q:$D(ALPTEST) | 
|---|
| 88 | . S ALPSTOP=$$S^%ZTLOAD() | 
|---|
| 89 | . S ALDFN=0 | 
|---|
| 90 | . F  S ALDFN=$O(^DPT("CN",ALPCN,ALDFN)) Q:+ALDFN'>0!(ALPSTOP)  D PAT | 
|---|
| 91 | K XQA,XQAMSG | 
|---|
| 92 | S ALPDTE=$$FMTE^XLFDT($$NOW^XLFDT) | 
|---|
| 93 | S XQA(DUZ)="" | 
|---|
| 94 | S XQAMSG="BCBU WORKSTATION INIT Started "_ALPDTS_" and finished "_ALPDTE_". " | 
|---|
| 95 | ;_ALPBK_" entries sent." | 
|---|
| 96 | D SETUP^XQALERT | 
|---|
| 97 | EXIT ; | 
|---|
| 98 | K ALPDTS,ALPDTE,ALPCNT | 
|---|
| 99 | K ALPB,ALPBI,ALPBJ,ALPCN,ALDFN,ALPMDT,ALPML,ALPORDR,MSCTR,MSH,ORC | 
|---|
| 100 | K PID,PV1,ALPHLL,ALPALL,DIR,Y,DTOUT,DUOUT,DIRUT,DIROUT,ALPDIV | 
|---|
| 101 | K ALPTST,ALPSTOP,ALPOK,ZTSAVE,ALPCNI,ALPCNT,ALP,ALPDVN,ALPSLT,ALPWKS | 
|---|
| 102 | K PID,PV1,^TMP("PSJ",$J),^TMP("PSJBU",$J) | 
|---|
| 103 | ; | 
|---|
| 104 | Q | 
|---|
| 105 | MLOG ;Need to loop though the Med log file to get all med logs | 
|---|
| 106 | ;associated with the order | 
|---|
| 107 | Q:'$D(^PSB(53.79,"AORDX",ALDFN,ALPORDR)) | 
|---|
| 108 | S X=+$$GET^XPAR("PKG.BAR CODE MED ADMIN","PSB BKUP MEDLG",1,"Q") | 
|---|
| 109 | S X=$S(X>0:"T-"_X,1:"T-30") | 
|---|
| 110 | D ^%DT | 
|---|
| 111 | Q:+Y'>0  ;Cannot get a valid date | 
|---|
| 112 | S ALPMDT=Y | 
|---|
| 113 | F  S ALPMDT=$O(^PSB(53.79,"AORDX",ALDFN,ALPORDR,ALPMDT)) Q:+ALPMDT'>0  D | 
|---|
| 114 | . S ALPML=0 | 
|---|
| 115 | . F  S ALPML=$O(^PSB(53.79,"AORDX",ALDFN,ALPORDR,ALPMDT,ALPML)) Q:+ALPML'>0  D | 
|---|
| 116 | . . Q:+$P($G(^PSB(53.79,ALPML,0)),U,1)'>0  ; Bad Med-log | 
|---|
| 117 | . . ;W !,ALPML | 
|---|
| 118 | . . S ALPRSLT=$$MEDL^ALPBINP(ALPML) | 
|---|
| 119 | Q | 
|---|
| 120 | MESS ;BUILD AND SEND MESSAGE | 
|---|
| 121 | K ALPB | 
|---|
| 122 | D EN^PSJBCBU(ALDFN,ALPORDR,.ALPB) | 
|---|
| 123 | S ALPBI=0 | 
|---|
| 124 | F  S ALPBI=$O(ALPB(ALPBI)) Q:ALPBI'>0  D | 
|---|
| 125 | . I $E(ALPB(ALPBI),1,3)="MSH" S MSH=ALPBI | 
|---|
| 126 | . I $E(ALPB(ALPBI),1,3)="PID" S PID=ALPBI | 
|---|
| 127 | . I $E(ALPB(ALPBI),1,3)="PV1" S PV1=ALPBI | 
|---|
| 128 | . I $E(ALPB(ALPBI),1,3)="ORC" S ORC=ALPBI | 
|---|
| 129 | I +MSH'>0 Q   ;MISSING MSH SEGMENT BAD MESSAGE | 
|---|
| 130 | S MSCTR=$E(ALPB(MSH),4,8),ALPORD=ALPORDR | 
|---|
| 131 | S X=$$INI^ALPBINP() | 
|---|
| 132 | Q | 
|---|
| 133 | SNDPT ;Send a Single Patient | 
|---|
| 134 | K DIR,DTOUT,DUOUT,DIRUT,DIROUT | 
|---|
| 135 | S DIR(0)="PO^2:EM",DIR("A")="Select Patient " | 
|---|
| 136 | D ^DIR | 
|---|
| 137 | Q:$D(DIRUT) | 
|---|
| 138 | Q:+Y'>0 | 
|---|
| 139 | ;S ALDFN=10748 | 
|---|
| 140 | S ALDFN=+Y | 
|---|
| 141 | W !!,"Please Hold On While I send the orders",!! | 
|---|
| 142 | ; | 
|---|
| 143 | PAT ; | 
|---|
| 144 | K ^TMP("PSJBU",$J) | 
|---|
| 145 | S X=+$$GET^XPAR("PKG.BAR CODE MED ADMIN","PSB BKUP IPH",1,"Q") | 
|---|
| 146 | S X=$S(X>0:"T-"_X,1:"T-15") | 
|---|
| 147 | D ^%DT | 
|---|
| 148 | Q:+Y'>0  ;Cannot get a valid date | 
|---|
| 149 | D EN2^PSJBCBU(ALDFN,Y) | 
|---|
| 150 | Q:'$D(^TMP("PSJBU",$J))  ; NO DATA | 
|---|
| 151 | S ALPBJ=0 | 
|---|
| 152 | F  S ALPBJ=$O(^TMP("PSJBU",$J,ALPBJ)) Q:+ALPBJ'>0  D | 
|---|
| 153 | . Q:'$D(^TMP("PSJBU",$J,ALPBJ,0)) | 
|---|
| 154 | . S ALPORDR=$P(^TMP("PSJBU",$J,ALPBJ,0),U,3) | 
|---|
| 155 | . Q:+ALPORDR'>0 | 
|---|
| 156 | . D MESS | 
|---|
| 157 | . Q:ALPORDR["P"  ;If not pending do Med-Log | 
|---|
| 158 | . D MLOG | 
|---|
| 159 | S ALPSTOP=$$S^%ZTLOAD() | 
|---|
| 160 | Q | 
|---|