| 1 | PRCPCSOR ;WISC/RFJ-surgery order supplies                           ;01 Sep 93 | 
|---|
| 2 | ;;5.1;IFCAP;;Oct 20, 2000 | 
|---|
| 3 | ;Per VHA Directive 10-93-142, this routine should not be modified. | 
|---|
| 4 | N X | 
|---|
| 5 | S X="SROPS" X:$D(^%ZOSF("TEST")) ^("TEST") I '$T D NO Q | 
|---|
| 6 | I '$$VERSION^XPDUTL("SURGERY") D NO Q | 
|---|
| 7 | ; | 
|---|
| 8 | D ^PRCPUSEL Q:'$G(PRCP("I")) | 
|---|
| 9 | I "S"'=PRCP("DPTYPE") W !,"THIS OPTION SHOULD ONLY BE USED BY A SECONDARY INVENTORY POINT." Q | 
|---|
| 10 | N DIPGM,DFN,OPCODE,ORDERDA,PRCPDEV,PRCPFAUT,PRCPFLAG,PRCPFNEW,PRCPFONE,PRCPINNM,PRCPORD,PRCPPAT,PRCPPRIM,PRCPSDAT,PRCPSECO,PRCPSURG,SRTN,Y | 
|---|
| 11 | S PRCPPRIM=+$$SPD^PRCPUDPT(PRCP("I"),1) I 'PRCPPRIM Q | 
|---|
| 12 | S PRCPINNM=$$INVNAME^PRCPUX1(PRCPPRIM) | 
|---|
| 13 | S PRCPSECO=PRCP("I") | 
|---|
| 14 | ; | 
|---|
| 15 | S IOP="HOME" D ^%ZIS K IOP | 
|---|
| 16 | ; | 
|---|
| 17 | ;  srops returns ^dpt(dfn,0) and ^srf(srtn,0) | 
|---|
| 18 | F  W ! K SRTN D ^SROPS Q:'$G(DFN)!('$G(SRTN))  D | 
|---|
| 19 | .   S PRCPPAT=DFN,PRCPSURG=SRTN | 
|---|
| 20 | .   D SURGDATA^PRCPCRPL(PRCPSURG,27) | 
|---|
| 21 | .   S OPCODE=+$G(PRCPSDAT(130,PRCPSURG,27,"I")) | 
|---|
| 22 | .   W !?2,"Operation: ",$S('OPCODE:"<< NONE SPECIFIED >>",1:OPCODE),"  ",$P($$ICPT^PRCPCUT1(OPCODE),"^",2) | 
|---|
| 23 | .   W !!?2,"** Distribution from inventory point: ",PRCPINNM | 
|---|
| 24 | .   ; | 
|---|
| 25 | .   ;  if no orders placed, cc's linked to operation, ask for automatic | 
|---|
| 26 | .   S (PRCPFAUT,PRCPFLAG,PRCPFNEW,ORDERDA)=0 | 
|---|
| 27 | .   I '$D(^PRCP(445.3,"ASR",PRCPPAT,PRCPSURG)),$D(^PRCP(445.7,"AOP",+OPCODE)) S PRCPFAUT=1 D AUTOORD^PRCPCSO1 Q:PRCPFLAG  I 'ORDERDA S PRCPFAUT=0 | 
|---|
| 28 | .   I PRCPFAUT S PRCPFNEW=1 | 
|---|
| 29 | .   ; | 
|---|
| 30 | .   ;  if not automatic ordering, ask to select order | 
|---|
| 31 | .   I 'PRCPFAUT D ASKORDER Q:'ORDERDA  L +^PRCP(445.3,ORDERDA):5 I '$T D SHOWWHO^PRCPULOC(445.3,ORDERDA,0) Q | 
|---|
| 32 | .   I 'PRCPFAUT D ADD^PRCPULOC(445.3,ORDERDA,0,"Ordering Surgical Supplies") | 
|---|
| 33 | .   ; | 
|---|
| 34 | .   ;  ask to delete order if order is not new (prcpfnew=1) | 
|---|
| 35 | .   I '$G(PRCPFNEW) K PRCPFLAG D  I $G(PRCPFLAG) D UNLOCK Q | 
|---|
| 36 | .   .   S XP="  Do you want to DELETE the order",XH="  Enter 'YES' to delete the order, 'NO' to continue, '^' to exit." | 
|---|
| 37 | .   .   W !! S %=$$YN^PRCPUYN(2) | 
|---|
| 38 | .   .   I %=1 D DELORDER^PRCPOPD(ORDERDA) S PRCPFLAG=1 Q | 
|---|
| 39 | .   .   I %'=2 S PRCPFLAG=1 Q | 
|---|
| 40 | .   ; | 
|---|
| 41 | .   I 'PRCPFAUT W !! S PRCPFLAG=$$TYPE^PRCPOPUS(ORDERDA) I PRCPFLAG D UNLOCK Q | 
|---|
| 42 | .   ; | 
|---|
| 43 | .   ;  if automatic ordering, add items to order | 
|---|
| 44 | .   I PRCPFAUT D AUTOITEM I PRCPFLAG S PRCPFAUT=0 | 
|---|
| 45 | .   ; | 
|---|
| 46 | .   I 'PRCPFAUT D | 
|---|
| 47 | .   .   ;  show items which should be ordered for opcode | 
|---|
| 48 | .   .   D SHOWCC^PRCPCSOU(OPCODE,ORDERDA) | 
|---|
| 49 | .   .   D ITEMS^PRCPOPEE(ORDERDA) | 
|---|
| 50 | .   I '$O(^PRCP(445.3,ORDERDA,1,0)) D DELORDER^PRCPOPD(ORDERDA) D UNLOCK Q | 
|---|
| 51 | .   ; | 
|---|
| 52 | .   ;  ask remarks | 
|---|
| 53 | .   W !! I $$REMARKS^PRCPOPUS(ORDERDA) Q | 
|---|
| 54 | .   ;  ask to release order | 
|---|
| 55 | .   I $$ASKREL^PRCPOPR(ORDERDA,1)=1 D RELEASE^PRCPOPR(ORDERDA) | 
|---|
| 56 | .   I $P($G(^PRCP(445.3,ORDERDA,0)),"^",6)'="R" D UNLOCK Q | 
|---|
| 57 | .   W !,"* * * ORDER HAS BEEN RELEASED * * *" | 
|---|
| 58 | .   ; | 
|---|
| 59 | .   ;  order is released, print picking ticket automatically | 
|---|
| 60 | .   S (PRCPDEV,ZTIO)=$P($G(^PRCP(445,PRCPPRIM,"DEV")),"^") I ZTIO="" W !,"NO DEVICE SPECIFIED FOR PRINTING THE PICKING TICKET IN ",$E(PRCPINNM,1,15) D UNLOCK Q | 
|---|
| 61 | .   D BUILD^PRCPOPT(ORDERDA) | 
|---|
| 62 | .   D VARIABLE^PRCPOPU | 
|---|
| 63 | .   S ZTDESC="Print Picking Ticket Automatically",ZTRTN="DQ^PRCPOPT" | 
|---|
| 64 | .   S ZTSAVE("PRCP*")="",ZTSAVE("ORDERDA")="",ZTSAVE("^TMP($J,""PRCPOPT PICK LIST"",")="",ZTSAVE("ZTREQ")="@" | 
|---|
| 65 | .   D ^%ZTLOAD,Q^PRCPOPT K IO("Q"),ZTSK | 
|---|
| 66 | .   W !!,"Picking Ticket Queued on printer ",PRCPDEV," in ",$E(PRCPINNM,1,15)," !" | 
|---|
| 67 | .   D UNLOCK | 
|---|
| 68 | Q | 
|---|
| 69 | ; | 
|---|
| 70 | ; | 
|---|
| 71 | UNLOCK ;  unlock distribution order | 
|---|
| 72 | D CLEAR^PRCPULOC(445.3,ORDERDA,0) | 
|---|
| 73 | L -^PRCP(445.3,ORDERDA,0) | 
|---|
| 74 | Q | 
|---|
| 75 | ; | 
|---|
| 76 | ; | 
|---|
| 77 | NO ;  not available | 
|---|
| 78 | W !,"NOT AVAILABLE, SURGERY PACKAGE NOT LOADED." | 
|---|
| 79 | Q | 
|---|
| 80 | ; | 
|---|
| 81 | ; | 
|---|
| 82 | PATLINK(ORDERDA,PATIENT,SURGERY)  ;  link patient da and surgery da to order da | 
|---|
| 83 | N %,D0,DA,DI,DIC,DIE,DIPGM,DQ,DR,X,Y | 
|---|
| 84 | I '$D(^PRCP(445.3,ORDERDA,0)) Q | 
|---|
| 85 | S DA=ORDERDA,(DIC,DIE)="^PRCP(445.3,",DR="129///"_$C(96)_PATIENT_";130///"_$C(96)_SURGERY D ^DIE | 
|---|
| 86 | Q | 
|---|
| 87 | ; | 
|---|
| 88 | ; | 
|---|
| 89 | AUTOITEM ;  automatically put items in order | 
|---|
| 90 | N CCITEM,ITEMDA | 
|---|
| 91 | W !!,"ADDING ITEMS TO THE ORDER:" | 
|---|
| 92 | S (CCITEM,PRCPFLAG)=0 F  S CCITEM=$O(^PRCP(445.7,"AOP",OPCODE,CCITEM)) Q:'CCITEM  D | 
|---|
| 93 | .   W !,$E($$DESCR^PRCPUX1(PRCPPRIM,CCITEM),1,30),?32,"MI#",CCITEM,?45 | 
|---|
| 94 | .   S ITEMDA=$$ITEMADD^PRCPOPUS(ORDERDA,CCITEM,1) | 
|---|
| 95 | .   I 'ITEMDA W "*** ITEM NOT ORDERED ***" S PRCPFLAG=1 Q | 
|---|
| 96 | .   W "Item Ordered" | 
|---|
| 97 | Q | 
|---|
| 98 | ; | 
|---|
| 99 | ; | 
|---|
| 100 | ASKORDER ;  ask for order selection | 
|---|
| 101 | ;  show orders already placed for patient and operation | 
|---|
| 102 | D SHOWORD^PRCPCSOU(PRCPPAT,PRCPSURG) | 
|---|
| 103 | W ! | 
|---|
| 104 | S ORDERDA=+$$ORDERSEL^PRCPOPUS(PRCPPRIM,PRCPSECO,"",1) I 'ORDERDA Q | 
|---|
| 105 | ;  tie patient and operation to the order | 
|---|
| 106 | I $G(PRCPFNEW) D PATLINK(ORDERDA,PRCPPAT,PRCPSURG) | 
|---|
| 107 | I $P($G(^PRCP(445.3,ORDERDA,2)),"^",1,2)'=(PRCPPAT_"^"_PRCPSURG) W !,"YOU CAN ONLY SELECT ORDERS WHICH HAVE BEEN PLACED FOR THIS PATIENT AND OPERATION" G ASKORDER | 
|---|
| 108 | Q | 
|---|