| 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 | ; | 
|---|