| 1 | PXRMRDI ; SLC/PKR - Routines to support RDI list building. ;07/27/2006
 | 
|---|
| 2 |  ;;2.0;CLINICAL REMINDERS;**4**;Feb 04, 2005;Build 21
 | 
|---|
| 3 |  ;=========================================================
 | 
|---|
| 4 | APPERR(TYPE) ;Handle errors getting appointment data.
 | 
|---|
| 5 |  N ECODE,NL,TIME,USER
 | 
|---|
| 6 |  S USER=$S($D(ZTQUEUED):DBDUZ,1:DUZ)
 | 
|---|
| 7 |  S TIME=$$NOW^XLFDT
 | 
|---|
| 8 |  S TIME=$$FMTE^XLFDT(TIME)
 | 
|---|
| 9 |  K ^TMP("PXRMXMZ",$J)
 | 
|---|
| 10 |  S ^TMP("PXRMXMZ",$J,1,0)="The "_TYPE_" requested by "_$$GET1^DIQ(200,USER,.01)_" on "
 | 
|---|
| 11 |  S ^TMP("PXRMXMZ",$J,2,0)=TIME_" requires appointment data which could not be obtained"
 | 
|---|
| 12 |  S ^TMP("PXRMXMZ",$J,3,0)="from the Scheduling database due to the following error(s):"
 | 
|---|
| 13 |  S ECODE=0,NL=3
 | 
|---|
| 14 |  F  S ECODE=$O(^TMP($J,"SDAMA301",ECODE)) Q:ECODE=""  D
 | 
|---|
| 15 |  . S NL=NL+1,^TMP("PXRMXMZ",$J,NL,0)=" "_^TMP($J,"SDAMA301",ECODE)
 | 
|---|
| 16 |  D SEND^PXRMMSG("Scheduling database error(s)",1)
 | 
|---|
| 17 |  K ^TMP($J,"SDAMA301")
 | 
|---|
| 18 |  Q
 | 
|---|
| 19 |  ;
 | 
|---|
| 20 |  ;=========================================================
 | 
|---|
| 21 | APPL(NGET,BDT,EDT,PLIST,PARAM) ;List type computed finding that returns
 | 
|---|
| 22 |  ;a list of patients with appointments in the date range BDT to EDT.
 | 
|---|
| 23 |  N FILTER,FLDS,RESULT
 | 
|---|
| 24 |  K ^TMP($J,PLIST),^TMP($J,"SDAMA301")
 | 
|---|
| 25 |  I BDT<2000000 S BDT=2000101
 | 
|---|
| 26 |  S FILTER(1)=BDT_";"_EDT
 | 
|---|
| 27 |  S FILTER("SORT")="P"
 | 
|---|
| 28 |  ;Set the rest of the filter nodes.
 | 
|---|
| 29 |  D SFILTER(PARAM,.FILTER,.FLDS)
 | 
|---|
| 30 |  ;DBIA #4433
 | 
|---|
| 31 |  S RESULT=$$SDAPI^SDAMA301(.FILTER)
 | 
|---|
| 32 |  I RESULT=-1 D APPERR("Patient List build") Q
 | 
|---|
| 33 |  N COUNT,DATE,DFN,DONE,ITEM
 | 
|---|
| 34 |  S DFN=""
 | 
|---|
| 35 |  F  S DFN=$O(^TMP($J,"SDAMA301",DFN)) Q:DFN=""  D
 | 
|---|
| 36 |  . S (COUNT,DONE)=0,DATE=""
 | 
|---|
| 37 |  . F  S DATE=$O(^TMP($J,"SDAMA301",DFN,DATE),-1) Q:(DONE)!(DATE="")  D
 | 
|---|
| 38 |  .. S COUNT=COUNT+1
 | 
|---|
| 39 |  .. S ITEM=$P(^TMP($J,"SDAMA301",DFN,DATE),U,2)
 | 
|---|
| 40 |  .. S ^TMP($J,PLIST,DFN,COUNT)=U_DATE_U_44_U_$P(ITEM,";",1)_U_$P(ITEM,";",2)
 | 
|---|
| 41 |  .. I COUNT=NGET S DONE=1
 | 
|---|
| 42 |  K ^TMP($J,"SDAMA301"),^TMP($J,"HLOCL")
 | 
|---|
| 43 |  Q
 | 
|---|
| 44 |  ;
 | 
|---|
| 45 |  ;=========================================================
 | 
|---|
| 46 | PAPPL(DFN,NGET,BDT,EDT,NFOUND,TEST,DATE,VALUE,TEXT) ;Multiple type computed
 | 
|---|
| 47 |  ;finding that returns a list appointments for a patient.
 | 
|---|
| 48 |  N FILTER,FLDS,PARAM,RESULT
 | 
|---|
| 49 |  K ^TMP($J,"SDAMA301")
 | 
|---|
| 50 |  S PARAM=TEST K TEST
 | 
|---|
| 51 |  S NFOUND=0
 | 
|---|
| 52 |  I BDT<2000000 S BDT=2000101
 | 
|---|
| 53 |  S FILTER(1)=BDT_";"_EDT
 | 
|---|
| 54 |  S FILTER(4)=DFN
 | 
|---|
| 55 |  S FILTER("SORT")="P"
 | 
|---|
| 56 |  ;Set the rest of the filter nodes.
 | 
|---|
| 57 |  D SFILTER(PARAM,.FILTER,.FLDS)
 | 
|---|
| 58 |  ;DBIA #4433
 | 
|---|
| 59 |  S RESULT=$$SDAPI^SDAMA301(.FILTER)
 | 
|---|
| 60 |  I RESULT=-1 D APPERR("Computed finding evaluation") Q
 | 
|---|
| 61 |  N APPDATE,IND,DONE,IND,ITEM
 | 
|---|
| 62 |  S APPDATE="",DONE=0
 | 
|---|
| 63 |  F  S APPDATE=$O(^TMP($J,"SDAMA301",DFN,APPDATE),-1) Q:(DONE)!(APPDATE="")  D
 | 
|---|
| 64 |  . S NFOUND=NFOUND+1
 | 
|---|
| 65 |  . S TEST(NFOUND)=1,DATE(NFOUND)=APPDATE
 | 
|---|
| 66 |  . S VALUE(NFOUND,"VALUE")=^TMP($J,"SDAMA301",DFN,APPDATE)
 | 
|---|
| 67 |  . I NFOUND=NGET S DONE=1
 | 
|---|
| 68 |  K ^TMP($J,"SDAMA301"),^TMP($J,"HLOCL")
 | 
|---|
| 69 |  Q
 | 
|---|
| 70 |  ;
 | 
|---|
| 71 |  ;=========================================================
 | 
|---|
| 72 | SFILTER(PARAM,FILTER,FLDS) ;Parse the PARMETER and set the appropriate
 | 
|---|
| 73 |  ;fields.
 | 
|---|
| 74 |  N IND,LL,P1,P2,STATUS,TEMP
 | 
|---|
| 75 |  S (FLDS,LL,STATUS)=""
 | 
|---|
| 76 |  F IND=1:1:$L(PARAM,U) D
 | 
|---|
| 77 |  . S TEMP=$P(PARAM,U,IND)
 | 
|---|
| 78 |  . S P1=$P(TEMP,":",1),P2=$P(TEMP,":",2)
 | 
|---|
| 79 |  . I P1="FLDS" S FLDS=$TR(P2,",",";") Q
 | 
|---|
| 80 |  . I P1="LL" S LL=P2 Q
 | 
|---|
| 81 |  . I P1="STATUS" S STATUS=$TR(P2,",",";") Q
 | 
|---|
| 82 |  S FILTER("FLDS")=$S(FLDS="":"1;2",1:FLDS)
 | 
|---|
| 83 |  S FILTER(3)=$S(STATUS="":"I;R",1:STATUS)
 | 
|---|
| 84 |  I LL="" Q
 | 
|---|
| 85 |  S LL=$O(^PXRMD(810.9,"B",LL,""))
 | 
|---|
| 86 |  D LOCLIST^PXRMLOCF(LL,"HLOCL")
 | 
|---|
| 87 |  S FILTER(2)="^TMP($J,""HLOCL"","
 | 
|---|
| 88 |  Q
 | 
|---|
| 89 |  ;
 | 
|---|
| 90 |  ;=========================================================
 | 
|---|
| 91 | TFL(DFN,NGET,BDT,EDT,NFOUND,TEST,DATE,VALUE,TEXT) ;Multiple type computed
 | 
|---|
| 92 |  ;finding for a patient's treating facility list.
 | 
|---|
| 93 |  N DONE,IND,NOW,SDIR,TDATE,TFL,TFLD
 | 
|---|
| 94 |  S NFOUND=0
 | 
|---|
| 95 |  ;DBIA #2990
 | 
|---|
| 96 |  D TFL^VAFCTFU1(.TFL,DFN)
 | 
|---|
| 97 |  I +TFL(1)=-1 Q
 | 
|---|
| 98 |  S NOW=$$NOW^PXRMDATE
 | 
|---|
| 99 |  S (DONE,IND)=0
 | 
|---|
| 100 |  F  S IND=$O(TFL(IND)) Q:(DONE)!(IND="")  D
 | 
|---|
| 101 |  . S NFOUND=NFOUND+1
 | 
|---|
| 102 |  . S TEST(NFOUND)=1,DATE(NFOUND)=NOW
 | 
|---|
| 103 |  . S VALUE(NFOUND,"VALUE")=TFL(IND)
 | 
|---|
| 104 |  . I NFOUND=NGET S DONE=1 Q
 | 
|---|
| 105 |  F IND=1:1:NFOUND S VALUE(IND,"NUM FACILITIES")=NFOUND
 | 
|---|
| 106 |  Q
 | 
|---|
| 107 |  ;
 | 
|---|