| 1 | ALPBSP1 ;OIFO-DALLAS MW,SED,KC-LIST AND SELECT PATIENT'S ORDERS ;01/01/03 | 
|---|
| 2 | ;;3.0;BAR CODE MED ADMIN;**8**;Mar 2004 | 
|---|
| 3 | ; | 
|---|
| 4 | ; **NOTE:  THIS ROUTINE IS CALLED BY A LIST MANAGER | 
|---|
| 5 | ;          PROTOCOL IN WHICH A PATIENT HAS ALREADY BEEN | 
|---|
| 6 | ;          SELECTED -- THIS ROUTINE SHOULD NOT BE RUN | 
|---|
| 7 | ;          DIRECTLY. | 
|---|
| 8 | ; | 
|---|
| 9 | EN ; -- main entry point for ALPB PATIENT ORDERS | 
|---|
| 10 | D EN^VALM("PSB SELECT ORDERS") | 
|---|
| 11 | Q | 
|---|
| 12 | ; | 
|---|
| 13 | HDR ; -- header code | 
|---|
| 14 | I +$G(ALPBIEN)'>0 Q | 
|---|
| 15 | S ALPBPT(0)=$G(^ALPB(53.7,ALPBIEN,0)) | 
|---|
| 16 | M ALPBPT(1)=^ALPB(53.7,ALPBIEN,1) | 
|---|
| 17 | D HDR^ALPBFRM2(.ALPBPT,"A",0,.ALPBHDR) | 
|---|
| 18 | S ALPBX=1 | 
|---|
| 19 | F  S ALPBX=$O(ALPBHDR(ALPBX)) Q:'ALPBX  D | 
|---|
| 20 | .S VALMHDR(ALPBX-1)=ALPBHDR(ALPBX) | 
|---|
| 21 | K ALPBHDR,ALPBPT,ALPBX | 
|---|
| 22 | Q | 
|---|
| 23 | ; | 
|---|
| 24 | INIT ; -- init variables and list array | 
|---|
| 25 | I +$G(ALPBIEN)'>0 Q | 
|---|
| 26 | K ALPBORDS,^TMP("ALPBORDS",$J) | 
|---|
| 27 | D ORDS^ALPBUTL(ALPBIEN,"",.ALPBORDS) | 
|---|
| 28 | K ALPBORDS("B") | 
|---|
| 29 | I $G(ALPBLTYP)="" S ALPBLTYP="Active" | 
|---|
| 30 | S ALPBX=0 | 
|---|
| 31 | F  S ALPBX=$O(ALPBORDS(ALPBX)) Q:'ALPBX  D | 
|---|
| 32 | .I $G(ALPBORDS(ALPBX,2))="" S ALPBORDS(ALPBX,2)="XX" | 
|---|
| 33 | .S ALPBORDS("B",ALPBORDS(ALPBX,2),ALPBORDS(ALPBX),ALPBX)="" | 
|---|
| 34 | S ALPBLINE=0 | 
|---|
| 35 | S ALPBSTAT="" | 
|---|
| 36 | F  S ALPBSTAT=$O(ALPBORDS("B",ALPBSTAT)) Q:ALPBSTAT=""  D | 
|---|
| 37 | .S ALPBSTN=$$STAT2^ALPBUTL1(ALPBSTAT) | 
|---|
| 38 | .I ALPBLTYP'="ALL"&(ALPBSTN'="Active") K ALPBSTN Q | 
|---|
| 39 | .S ALPBORDN="" | 
|---|
| 40 | .F  S ALPBORDN=$O(ALPBORDS("B",ALPBSTAT,ALPBORDN)) Q:ALPBORDN=""  D | 
|---|
| 41 | ..S ALPBX=0 | 
|---|
| 42 | ..F  S ALPBX=$O(ALPBORDS("B",ALPBSTAT,ALPBORDN,ALPBX)) Q:'ALPBX  D | 
|---|
| 43 | ...S ^TMP("ALPBORDS",$J,"B",ALPBORDN)=ALPBX | 
|---|
| 44 | ...S ALPBLINE=ALPBLINE+1 | 
|---|
| 45 | ...S ALPBDATA=" "_ALPBORDN | 
|---|
| 46 | ...S ALPBDATA=$$PAD^ALPBUTL(ALPBDATA,12)_ALPBSTN | 
|---|
| 47 | ...S ALPBDATA=$$PAD^ALPBUTL(ALPBDATA,21)_ALPBORDS(ALPBX,1) | 
|---|
| 48 | ...I +$G(ALPBORDS(ALPBX,3,0)) D | 
|---|
| 49 | ....S ALPBDATA=$$PAD^ALPBUTL(ALPBDATA,26)_ALPBORDS(ALPBX,3,1) | 
|---|
| 50 | ...I $G(ALPBORDS(ALPBX,4))'="" D | 
|---|
| 51 | ....S ALPBY=$P(ALPBORDS(ALPBX,4),"^",1,3) | 
|---|
| 52 | ....S ALPBY=$TR(ALPBY,"^"," ") | 
|---|
| 53 | ....S ALPBDATA=ALPBDATA_" ("_ALPBY_")" | 
|---|
| 54 | ....K ALPBY | 
|---|
| 55 | ...S ^TMP("ALPBORDS",$J,ALPBLINE,0)=ALPBDATA | 
|---|
| 56 | ...K ALPBDATA | 
|---|
| 57 | ...S ALPBY=1 | 
|---|
| 58 | ...F  S ALPBY=$O(ALPBORDS(ALPBX,3,ALPBY)) Q:'ALPBY  D | 
|---|
| 59 | ....S ALPBDATA=$$PAD^ALPBUTL($G(ALPBDATA),27)_ALPBORDS(ALPBX,3,ALPBY) | 
|---|
| 60 | ....S ALPBLINE=ALPBLINE+1 | 
|---|
| 61 | ....S ^TMP("ALPBORDS",$J,ALPBLINE,0)=ALPBDATA | 
|---|
| 62 | ....K ALPBDATA | 
|---|
| 63 | ...K ALPBY | 
|---|
| 64 | ..K ALPBX | 
|---|
| 65 | .K ALPBORDN,ALPBSTN | 
|---|
| 66 | S VALMCNT=ALPBLINE | 
|---|
| 67 | I +$O(^TMP("ALPBORDS",$J,0))=0&(ALPBLTYP="Active") D | 
|---|
| 68 | .S ALPBLTYP="ALL" | 
|---|
| 69 | .S VALM("TITLE")="BCMAbu ALL Orders List" | 
|---|
| 70 | .D INIT | 
|---|
| 71 | .S VALMBCK="R" | 
|---|
| 72 | K ALPBLINE,ALPBLTYP,ALPBORDS,ALPBSTAT | 
|---|
| 73 | Q | 
|---|
| 74 | ; | 
|---|
| 75 | HELP ; -- help code | 
|---|
| 76 | S X="?" D DISP^XQORM1 W !! | 
|---|
| 77 | Q | 
|---|
| 78 | ; | 
|---|
| 79 | EXIT ; -- exit code | 
|---|
| 80 | K ^TMP("ALPBORDS",$J) | 
|---|
| 81 | Q | 
|---|
| 82 | ; | 
|---|
| 83 | EXPND ; -- expand code | 
|---|
| 84 | Q | 
|---|
| 85 | ; | 
|---|
| 86 | SELORD ; select an order... | 
|---|
| 87 | I '$D(^TMP("ALPBORDS",$J)) Q | 
|---|
| 88 | S DIR(0)="FAO^1:45" | 
|---|
| 89 | S DIR("A")="Select ORDER#: " | 
|---|
| 90 | S DIR("A",1)="Select order number, more than one separated by a comma, or 'ALL': " | 
|---|
| 91 | S DIR("B")="ALL" | 
|---|
| 92 | S DIR("?")="Select order numbers from the list or 'ALL'." | 
|---|
| 93 | S DIR("?",1)="Separate multiple order numbers with a comma." | 
|---|
| 94 | D ^DIR K DIR | 
|---|
| 95 | I $D(DIRUT) K DIRUT,DTOUT,X,Y Q | 
|---|
| 96 | S ALPBOSEL=$$UP^XLFSTR($$STRIP^XLFSTR(Y," ")) | 
|---|
| 97 | I ALPBOSEL="ALL" D | 
|---|
| 98 | .S I=0 | 
|---|
| 99 | .S ALPBOSEL="" | 
|---|
| 100 | .F  S ALPBOSEL=$O(^TMP("ALPBORDS",$J,"B",ALPBOSEL)) Q:ALPBOSEL=""  D | 
|---|
| 101 | ..S I=I+1 | 
|---|
| 102 | ..S ALPBOSEL(I)=^TMP("ALPBORDS",$J,"B",ALPBOSEL) | 
|---|
| 103 | .S ALPBOSEL(0)=I | 
|---|
| 104 | I ALPBOSEL'="ALL" D | 
|---|
| 105 | .; make sure the input is separated by a comma... | 
|---|
| 106 | .S ALPBOSEL=$$REPL^ALPBUTL2(ALPBOSEL,",") | 
|---|
| 107 | .; parse out the user's input... | 
|---|
| 108 | .F I=1:1 Q:$P(ALPBOSEL,",",I)=""  D | 
|---|
| 109 | ..I $G(^TMP("ALPBORDS",$J,"B",$P(ALPBOSEL,",",I)))="" Q | 
|---|
| 110 | ..S ALPBOSEL(I)=^TMP("ALPBORDS",$J,"B",$P(ALPBOSEL,",",I)) | 
|---|
| 111 | I +$O(ALPBOSEL(0))=0 D  Q | 
|---|
| 112 | .W $C(7) | 
|---|
| 113 | .W !,"Invalid selection." | 
|---|
| 114 | .S DIR(0)="EA" | 
|---|
| 115 | .S DIR("A")="Press <enter> to continue..." | 
|---|
| 116 | .D ^DIR K DIR,DIRUT,DTOUT,X,Y | 
|---|
| 117 | D EN^ALPBSP2 | 
|---|
| 118 | K ALPBOSEL | 
|---|
| 119 | Q | 
|---|
| 120 | ; | 
|---|
| 121 | SELALL ; set list type to ALL orders... | 
|---|
| 122 | S ALPBLTYP="ALL" | 
|---|
| 123 | S VALM("TITLE")="BCMAbu ALL Orders List" | 
|---|
| 124 | D INIT | 
|---|
| 125 | Q | 
|---|
| 126 | ; | 
|---|
| 127 | SELACT ; set list type to Active orders... | 
|---|
| 128 | S ALPBLTYP="Active" | 
|---|
| 129 | S VALM("TITLE")="BCMAbu ACTIVE Orders List" | 
|---|
| 130 | D INIT | 
|---|
| 131 | Q | 
|---|