| 1 | ORQQPL2 ; ALB/PDR/REV - RPCs FOR CPRS GUI IMPLEMENTATION ;09:49 AM  29 Feb 2000
 | 
|---|
| 2 |  ;;3.0;ORDER ENTRY/RESULTS REPORTING;**10**;Dec 17, 1997
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ; -------------- GET HISTORY FOR DETAIL DISPLAY ----------------------
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 | HIST(RETURN,GMPIFN) ; GET AUDIT HISTORY
 | 
|---|
| 7 |  ; taken from EN^GMPLDISP
 | 
|---|
| 8 |  N IDT,AIFN,S,ORDT,TXT,I,L,GMPDT,LCNT
 | 
|---|
| 9 |  S LCNT=0
 | 
|---|
| 10 |  I '$D(^GMPL(125.8,"B",GMPIFN)) D  Q  ;BAIL OUT - NO CHANGES
 | 
|---|
| 11 |  . S RETURN(0)="NONE"
 | 
|---|
| 12 |  ;       get change history
 | 
|---|
| 13 |  S IDT=""
 | 
|---|
| 14 |  F  S IDT=$O(^GMPL(125.8,"AD",GMPIFN,IDT)) Q:IDT'>0  D
 | 
|---|
| 15 |  . S AIFN=""
 | 
|---|
| 16 |  . F  S AIFN=$O(^GMPL(125.8,"AD",GMPIFN,IDT,AIFN)) Q:AIFN'>0  D
 | 
|---|
| 17 |  .. D DT^GMPLHIST
 | 
|---|
| 18 |  ;         Transfer data and clean up for return to GUI
 | 
|---|
| 19 |  S S="",I=0,TXT=""
 | 
|---|
| 20 |  F  S S=$O(GMPDT(S)) Q:S=""  D
 | 
|---|
| 21 |  . S L=GMPDT(S,0)
 | 
|---|
| 22 |  . I $L(L,": ")>1 D  Q  ; does line begin with date? (hope ": " can't be part of text)
 | 
|---|
| 23 |  .. D FLUSH(.RETURN,.I)
 | 
|---|
| 24 |  .. S ORDT=$P(L,": ") ; get new date
 | 
|---|
| 25 |  .. S TXT=$$STRIP($P(L,": ",2,999)) ; start new text string
 | 
|---|
| 26 |  . S TXT=TXT_" "_$$STRIP(L)  ; line does not begin with date, so add to existing text line
 | 
|---|
| 27 |  I '$D(RETURN(0)) S RETURN(0)=I
 | 
|---|
| 28 |  D FLUSH(.RETURN,.I)
 | 
|---|
| 29 |  Q 
 | 
|---|
| 30 |  ;
 | 
|---|
| 31 | FLUSH(RETURN,I) ; FLUSH FORMATTED AUDIT STRING
 | 
|---|
| 32 |   I I'=0 D  ; do we have a text string built?
 | 
|---|
| 33 |  . S RETURN(I)=$$STRIP(ORDT)_U_TXT  ; return date and text
 | 
|---|
| 34 |   S I=I+1
 | 
|---|
| 35 |  Q
 | 
|---|
| 36 |  ;
 | 
|---|
| 37 | STRIP(VAL) ; STRIP LEADING SPACES FROM VALUES
 | 
|---|
| 38 |  N J
 | 
|---|
| 39 |  F J=1:1 Q:$E(VAL,J)'=" "
 | 
|---|
| 40 |  Q $E(VAL,J,9999)
 | 
|---|
| 41 |  ;
 | 
|---|
| 42 |  ; ------------------- DELETE A PROBLEM FROM LIST ---------------------
 | 
|---|
| 43 |  ;
 | 
|---|
| 44 | DELETE(RESULT,GMPIFN,GMPROV,GMPVAMC,REASON) ; DELETE A PROBLEM
 | 
|---|
| 45 |  ; From GMPL1 - silent version
 | 
|---|
| 46 |  N CHNGE
 | 
|---|
| 47 |  I REASON'="" D
 | 
|---|
| 48 |  . S GMPFLD(10,"NEW",1)=REASON
 | 
|---|
| 49 |  . D NEWNOTE^GMPLSAVE
 | 
|---|
| 50 |  S CHNGE=GMPIFN_"^1.02^"_$$HTFM^XLFDT($H)
 | 
|---|
| 51 |  S CHNGE=CHNGE_U_DUZ_"^P^H^Deleted^"_+$G(GMPROV)
 | 
|---|
| 52 |  S $P(^AUPNPROB(GMPIFN,1),U,2)="H"
 | 
|---|
| 53 |  S RESULT=1
 | 
|---|
| 54 |  D AUDIT^GMPLX(CHNGE,"")
 | 
|---|
| 55 |  D DTMOD^GMPLX(GMPIFN)
 | 
|---|
| 56 |  K GMPFLD
 | 
|---|
| 57 |  Q
 | 
|---|
| 58 |  ; ------------------ REPLACE REMOVED PROBLEM ----------------------
 | 
|---|
| 59 |  ;
 | 
|---|
| 60 | REPLACE(RETURN,DA) ; -- replace problem on patient's list
 | 
|---|
| 61 |  ; taken from REPLACE^GMPLRPTR
 | 
|---|
| 62 |  N CHNGE,DIE,DR
 | 
|---|
| 63 |  I $P($G(^AUPNPROB(DA,1)),U,2)'="H" D  Q  ; BAIL OUT - INVALID RECORD
 | 
|---|
| 64 |  . S RETURN=0
 | 
|---|
| 65 |  S DR="1.02////P"
 | 
|---|
| 66 |  S DIE="^AUPNPROB("
 | 
|---|
| 67 |  D ^DIE
 | 
|---|
| 68 |  S CHNGE=DA_"^1.02^"_$$HTFM^XLFDT($H)_U_DUZ_"^H^P^Replaced^"_DUZ
 | 
|---|
| 69 |  D AUDIT^GMPLX(CHNGE,"")
 | 
|---|
| 70 |  D DTMOD^GMPLX(DA)
 | 
|---|
| 71 |  S RETURN=1
 | 
|---|
| 72 |  Q
 | 
|---|
| 73 |  ;
 | 
|---|
| 74 |  ; -------------------  VERIFY A PROBLEM ------------------------
 | 
|---|
| 75 |  ;
 | 
|---|
| 76 | VERIFY(RETURN,GMPIFN) ; -- verify a transcribed problem
 | 
|---|
| 77 |  ; RETURN:  ;(consistent with UPDATE function)
 | 
|---|
| 78 |  ;   SUCCESS:
 | 
|---|
| 79 |  ;     RETURN>0, RETURN(0)=""
 | 
|---|
| 80 |  ;   FAILURE:
 | 
|---|
| 81 |  ;      RETURN<0, RETURN(0)=verbose error message
 | 
|---|
| 82 |  N NOW,CHNGE
 | 
|---|
| 83 |  S NOW=$$HTFM^XLFDT($H)
 | 
|---|
| 84 |  I $P(^AUPNPROB(GMPIFN,1),U,2)'="T" D  Q  ; BAIL OUT - ALREADY VERIFIED
 | 
|---|
| 85 |  . S RETURN=-1
 | 
|---|
| 86 |  . S RETURN(0)="Problem Already Verified"
 | 
|---|
| 87 |  L +^AUPNPROB(GMPIFN,0):10
 | 
|---|
| 88 |  I '$T D  Q  ; BAIL OUT - NO LOCK
 | 
|---|
| 89 |  . S RETURN=-1
 | 
|---|
| 90 |  . S RETURN(0)="Record in use. Try again in a few moments"
 | 
|---|
| 91 |  S $P(^AUPNPROB(GMPIFN,1),U,2)="P"
 | 
|---|
| 92 |  S CHNGE=GMPIFN_"^1.02^"_NOW_U_DUZ_"^T^P^Verified^"_DUZ
 | 
|---|
| 93 |  D AUDIT^GMPLX(CHNGE,"")
 | 
|---|
| 94 |  D DTMOD^GMPLX(GMPIFN)
 | 
|---|
| 95 |  L -^AUPNPROB(GMPIFN,0)
 | 
|---|
| 96 |  S RETURN=1
 | 
|---|
| 97 |  S RETURN(0)=""
 | 
|---|
| 98 |  Q
 | 
|---|
| 99 | INACT(RETURN,GMPIFN) ; -- inactivate a problem
 | 
|---|
| 100 |  ; RETURN:  ;(consistent with UPDATE function)
 | 
|---|
| 101 |  ;   SUCCESS:
 | 
|---|
| 102 |  ;     RETURN>0, RETURN(0)=""
 | 
|---|
| 103 |  ;   FAILURE:
 | 
|---|
| 104 |  ;      RETURN<0, RETURN(0)=verbose error message
 | 
|---|
| 105 |  N NOW,CHNGE
 | 
|---|
| 106 |  S NOW=$$HTFM^XLFDT($H)
 | 
|---|
| 107 |  I $P(^AUPNPROB(GMPIFN,0),U,12)'="A" D  Q  ; BAIL OUT - ALREADY INACTIVE
 | 
|---|
| 108 |  . S RETURN=-1
 | 
|---|
| 109 |  . S RETURN(0)="Problem Already Inactive"
 | 
|---|
| 110 |  L +^AUPNPROB(GMPIFN,0):10
 | 
|---|
| 111 |  I '$T D  Q  ; BAIL OUT - NO LOCK
 | 
|---|
| 112 |  . S RETURN=-1
 | 
|---|
| 113 |  . S RETURN(0)="Record in use. Try again in a few moments"
 | 
|---|
| 114 |  S $P(^AUPNPROB(GMPIFN,0),U,12)="I"
 | 
|---|
| 115 |  S CHNGE=GMPIFN_"^.12^"_NOW_U_DUZ_"^A^I^Inactivated^"_DUZ
 | 
|---|
| 116 |  D AUDIT^GMPLX(CHNGE,"")
 | 
|---|
| 117 |  D DTMOD^GMPLX(GMPIFN)
 | 
|---|
| 118 |  L -^AUPNPROB(GMPIFN,0)
 | 
|---|
| 119 |  S RETURN=1
 | 
|---|
| 120 |  S RETURN(0)=""
 | 
|---|
| 121 |  Q
 | 
|---|
| 122 | OLDCOMM(ORY,PIFN) ; Return comments for a problem - SINGLE DIVISION!
 | 
|---|
| 123 |  ;N FAC,NIFN,NOTE,NOTECNT
 | 
|---|
| 124 |  ;S NOTECNT=0
 | 
|---|
| 125 |  ;S FAC=$O(^AUPNPROB(PIFN,11,"B",+$G(DUZ(2)),0)) Q:'FAC
 | 
|---|
| 126 |  ;F NIFN=0:0 S NIFN=$O(^AUPNPROB(PIFN,11,FAC,11,"B",NIFN)) Q:NIFN'>0  D
 | 
|---|
| 127 |  ;. Q:$P($G(^AUPNPROB(PIFN,11,FAC,11,NIFN,0)),U,4)'="A"
 | 
|---|
| 128 |  ;. S NOTE=$P($G(^AUPNPROB(PIFN,11,FAC,11,NIFN,0)),U,3)
 | 
|---|
| 129 |  ;. S NOTECNT=NOTECNT+1,ORY(NOTECNT)=NOTE
 | 
|---|
| 130 |  Q
 | 
|---|
| 131 | GETCOMM(ORY,PIFN)       ; Return comments for a problem - MULTI-DIVISIONAL
 | 
|---|
| 132 |  N FAC,NIFN,NOTE,NOTECNT
 | 
|---|
| 133 |  S NOTECNT=0,FAC=0
 | 
|---|
| 134 |  F  S FAC=$O(^AUPNPROB(PIFN,11,FAC)) Q:+FAC'>0  D
 | 
|---|
| 135 |  . S NIFN=0
 | 
|---|
| 136 |  . F  S NIFN=$O(^AUPNPROB(PIFN,11,FAC,11,NIFN)) Q:NIFN'>0  D
 | 
|---|
| 137 |  . . Q:$P($G(^AUPNPROB(PIFN,11,FAC,11,NIFN,0)),U,4)'="A"
 | 
|---|
| 138 |  . . S NOTE=$P($G(^AUPNPROB(PIFN,11,FAC,11,NIFN,0)),U,3)
 | 
|---|
| 139 |  . . S NOTECNT=NOTECNT+1,ORY(NOTECNT)=NOTE
 | 
|---|
| 140 |  Q
 | 
|---|
| 141 | SAVEVIEW(Y,GMPLVIEW) ; -- save new view in File #200/Field #125
 | 
|---|
| 142 |  N TMP
 | 
|---|
| 143 |  Q:'$D(GMPLVIEW)
 | 
|---|
| 144 |  S TMP=$P($G(^VA(200,DUZ,125)),U,2,999)
 | 
|---|
| 145 |  S ^VA(200,DUZ,125)=$P(GMPLVIEW,U,1)_U_TMP
 | 
|---|
| 146 |  S TMP=$$GET^XPAR(DUZ_";VA(200,","ORCH CONTEXT PROBLEMS",1)
 | 
|---|
| 147 |  I TMP'="" D  Q
 | 
|---|
| 148 |  . D CHG^XPAR(DUZ_";VA(200,","ORCH CONTEXT PROBLEMS",1,$P(GMPLVIEW,U,2))
 | 
|---|
| 149 |  D ADD^XPAR(DUZ_";VA(200,","ORCH CONTEXT PROBLEMS",1,$P(GMPLVIEW,U,2))
 | 
|---|
| 150 |  Q
 | 
|---|
| 151 |  ;
 | 
|---|