| [613] | 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
 | 
|---|