| 1 | TMGRPCS1 ;TMG/kst/RPC entry points for Search PT DOCS API ; 6/20/10 
 | 
|---|
| 2 |         ;;1.0;TMG-LIB;**1**;05/20/10
 | 
|---|
| 3 |         ;
 | 
|---|
| 4 |  ;"RPC ENTRY POINTS FOR TMG PATIENT DOCUMENTS SEARCH 
 | 
|---|
| 5 |  ;
 | 
|---|
| 6 |  ;"Copyright Kevin Toppenberg MD 6/20/10
 | 
|---|
| 7 |  ;"Released under GNU General Public License (GPL)
 | 
|---|
| 8 |  ;"
 | 
|---|
| 9 |  ;"=======================================================================
 | 
|---|
| 10 |  ;" RPC -- Public Functions.
 | 
|---|
| 11 |  ;"=======================================================================
 | 
|---|
| 12 |  ;"PDSRCH(TMGRESULT,TMGPARAMS) -- launch a background search in documents for 1 patient
 | 
|---|
| 13 |  ;"PDSTATUS(TMGRESULT,TMGPARAMS) -- Get status of background search
 | 
|---|
| 14 |  ;"PDRESULT(TMGRESULT,TMGPARAMS) -- Get result from background search
 | 
|---|
| 15 |  ;"PDCLEAR(TMGRESULT,TMGPARAMS) -- Tell background task to stop, and clear data array
 | 
|---|
| 16 |  ;"PDSTOP(TMGRESULT,TMGPARAMS) -- Tell background task to stop searching
 | 
|---|
| 17 |  ;"PDPREPSS^TMGRPCS1(TMGRESULT,TMGPARAMS) -- Prep for Subset of List for TORCombobox
 | 
|---|
| 18 |  ;"PDGETSS^TMGRPCS1(TMGRESULT,TMGPARAMS) -- Get a subset of list for TORCombobox
 | 
|---|
| 19 | 
 | 
|---|
| 20 |  ;"=======================================================================
 | 
|---|
| 21 |  ;"PRIVATE API FUNCTIONS
 | 
|---|
| 22 |  ;"=======================================================================
 | 
|---|
| 23 |  ;"
 | 
|---|
| 24 |  ;"=======================================================================
 | 
|---|
| 25 |  ;"=======================================================================
 | 
|---|
| 26 |  ;"Dependencies:  TMGSRCH2
 | 
|---|
| 27 |  ;"=======================================================================
 | 
|---|
| 28 |  ;"=======================================================================
 | 
|---|
| 29 |  ;
 | 
|---|
| 30 | PDSRCH(TMGRESULT,TMGPARAMS) ;
 | 
|---|
| 31 |         ;"Purpose: Handle PT DOCS SEARCH -- launch a background search in documents for 1 patient
 | 
|---|
| 32 |         ;"Input: TMGRESULT -- PASS BY REFERENCE.  AN OUT PARAMETER
 | 
|---|
| 33 |         ;"       TMGPARAMS -- Input: PatientEIN^SearchString
 | 
|---|
| 34 |         ;"           Search string notes:
 | 
|---|
| 35 |         ;"             Each word (or partial word) to look up is separated by spaces
 | 
|---|
| 36 |         ;"             All words are combined in AND fashion
 | 
|---|
| 37 |         ;"             Search is NOT case sensitive.
 | 
|---|
| 38 |         ;"             Exact pharases can be specified by quotes.
 | 
|---|
| 39 |         ;"             Example: 'dog cat monkey "in a barrel"
 | 
|---|
| 40 |         ;"Note: this function can ALSO be used to allow the CHANGE the search.
 | 
|---|
| 41 |         ;"      This will allow the search to begin while the user is still 
 | 
|---|
| 42 |         ;"      entering the search terms.  If the new search is just an
 | 
|---|
| 43 |         ;"      extension to the prior search, then the prior search will be  
 | 
|---|
| 44 |         ;"      added on rather than starting over.
 | 
|---|
| 45 |         ;        
 | 
|---|
| 46 |         ;"Results: TMGRESULT(0)="1^Success", OR -1^ErrorMsg
 | 
|---|
| 47 |         NEW DFN SET DFN=+$PIECE(TMGPARAMS,"^",1)
 | 
|---|
| 48 |         IF DFN'>0 DO  GOTO PDSDN
 | 
|---|
| 49 |         . SET TMGRESULT(0)="-1^Invalid Patient IEN"
 | 
|---|
| 50 |         NEW TMGSRCH SET TMGSRCH=$PIECE(TMGPARAMS,"^",2)
 | 
|---|
| 51 |         IF TMGSRCH="" DO  GOTO PDSDN
 | 
|---|
| 52 |         . SET TMGRESULT(0)="-1^No search terms provided."        
 | 
|---|
| 53 |         DO LAUNCHSR^TMGSRCH2(DFN,TMGSRCH) ;
 | 
|---|
| 54 |         SET TMGRESULT(0)="1^SUCCESS"
 | 
|---|
| 55 | PDSDN   QUIT        
 | 
|---|
| 56 |         ;
 | 
|---|
| 57 | PDSTATUS(TMGRESULT,TMGPARAMS) ;
 | 
|---|
| 58 |         ;"Purpose: Handle PT DOCS STATUS -- Get status of background search
 | 
|---|
| 59 |         ;"Input: TMGRESULT -- PASS BY REFERENCE.  AN OUT PARAMETER
 | 
|---|
| 60 |         ;"       TMGPARAMS -- Input: NOT USED
 | 
|---|
| 61 |         ;"Results: TMGRESULT(0)=1^Status or -1^ErrorMessage
 | 
|---|
| 62 |         SET TMGRESULT(0)=$$STATUS^TMGSRCH2() ;
 | 
|---|
| 63 |         QUIT
 | 
|---|
| 64 |         ;
 | 
|---|
| 65 | PDRESULT(TMGRESULT,TMGPARAMS) ;
 | 
|---|
| 66 |         ;"Purpose: Handle PT DOCS GET RESULTS -- get result from background search
 | 
|---|
| 67 |         ;"Input: TMGRESULT -- PASS BY REFERENCE.  AN OUT PARAMETER
 | 
|---|
| 68 |         ;"       TMGPARAMS -- Input: NOT USED
 | 
|---|
| 69 |         ;"Results: TMGRESULT(0)=FoundCount^Success, or -1^Message
 | 
|---|
| 70 |         ;"         TMGRESULT(1)=IEN1
 | 
|---|
| 71 |         ;"         TMGRESULT(2)=IEN2 ... etc.
 | 
|---|
| 72 |         DO RESULTS^TMGSRCH2(.TMGRESULT)
 | 
|---|
| 73 |         QUIT
 | 
|---|
| 74 |         ;       
 | 
|---|
| 75 | PDCLEAR(TMGRESULT,TMGPARAMS) ;
 | 
|---|
| 76 |         ;"Purpose: PT DOCS CLEAR -- Tell background task to stop, and clear data array
 | 
|---|
| 77 |         ;"Input: TMGRESULT -- PASS BY REFERENCE.  AN OUT PARAMETER
 | 
|---|
| 78 |         ;"       TMGPARAMS -- Input: NOT USED
 | 
|---|
| 79 |         ;"Results: TMGRESULT(0)="1^Success        
 | 
|---|
| 80 |         DO CLEAR^TMGSRCH2  
 | 
|---|
| 81 |         SET TMGRESULT(0)="1^Success"
 | 
|---|
| 82 |         QUIT
 | 
|---|
| 83 |         ;                
 | 
|---|
| 84 | PDSTOP(TMGRESULT,TMGPARAMS) ;
 | 
|---|
| 85 |         ;"Purpose: Handle PT DOCS STOP  -- Tell background task to stop searching
 | 
|---|
| 86 |         ;"Input: TMGRESULT -- PASS BY REFERENCE.  AN OUT PARAMETER
 | 
|---|
| 87 |         ;"       TMGPARAMS -- Input: NOT USED
 | 
|---|
| 88 |         ;"Results: TMGRESULT(0)=        
 | 
|---|
| 89 |         ;"Results: TMGRESULT(0)="1^Success        
 | 
|---|
| 90 |         DO STOP^TMGSRCH2   
 | 
|---|
| 91 |         SET TMGRESULT(0)="1^Success"
 | 
|---|
| 92 |         QUIT
 | 
|---|
| 93 |         ;
 | 
|---|
| 94 | PDPREPSS(TMGRESULT,TMGPARAMS) ;
 | 
|---|
| 95 |         ;"Purpose -- Prep for Subset of List for TORCombobox
 | 
|---|
| 96 |         ;"Input: TMGRESULT -- PASS BY REFERENCE.  AN OUT PARAMETER
 | 
|---|
| 97 |         ;"       TMGPARAMS -- Input: NOT USED
 | 
|---|
| 98 |         ;"Results: TMGRESULT(0)="1^Success", OR -1^ErrorMsg
 | 
|---|
| 99 |         NEW LIST
 | 
|---|
| 100 |         NEW ABORT SET ABORT=0
 | 
|---|
| 101 |         DO PDRESULT(.LIST) ;
 | 
|---|
| 102 |         NEW REF SET REF=$NAME(^TMG("TMP","SEARCH","SRCHTIU",$J,"OR LIST"))
 | 
|---|
| 103 |         KILL @REF
 | 
|---|
| 104 |         IF +$GET(LIST(0))'>0 SET TMGRESULT(0)=LIST(0) GOTO PSSDN
 | 
|---|
| 105 |         NEW I SET I=0
 | 
|---|
| 106 |         FOR  SET I=$ORDER(LIST(I)) QUIT:(+I'>0)!ABORT  DO
 | 
|---|
| 107 |         . NEW IEN SET IEN=+$GET(LIST(I)) QUIT:IEN'>0
 | 
|---|
| 108 |         . NEW NAME SET NAME=$$FORMAT(IEN)
 | 
|---|
| 109 |         . IF +NAME=-1 SET ABORT=1,TMGRESULT(0)=NAME QUIT
 | 
|---|
| 110 |         . SET @REF@(NAME,IEN)=""
 | 
|---|
| 111 | PSSDN   QUIT
 | 
|---|
| 112 |         ;  
 | 
|---|
| 113 |         ;
 | 
|---|
| 114 | FORMAT(IEN) ;
 | 
|---|
| 115 |         ;"Purpose: Return a string describing note title
 | 
|---|
| 116 |         ;"Input: IEN -- The IEN in file 8925
 | 
|---|
| 117 |         ;"Result: July 15, 2010 -- NOTE TITLE -- AUTHOR
 | 
|---|
| 118 |         SET IEN=+$GET(IEN)
 | 
|---|
| 119 |         NEW RESULT 
 | 
|---|
| 120 |         IF (IEN'>0)!($DATA(^TIU(8925,IEN))=0) DO  GOTO FMTDN
 | 
|---|
| 121 |         . SET RESULT="-1^<Note "_IEN_" Doesn't Exist>"
 | 
|---|
| 122 |         NEW TMGOUT,TMGMSG,TMGIENS
 | 
|---|
| 123 |         SET TMGIENS=IEN_","
 | 
|---|
| 124 |         DO GETS^DIQ(8925,TMGIENS,".01;1202","","TMGOUT","TMGMSG")
 | 
|---|
| 125 |         IF $DATA(TMGMSG("DIERR")) DO  GOTO FMTDN
 | 
|---|
| 126 |         . SET RESULT="-1^<Error getting information for record "_IEN_">"
 | 
|---|
| 127 |         NEW TITLE SET TITLE=$GET(TMGOUT(8925,TMGIENS,.01),"? TITLE")
 | 
|---|
| 128 |         NEW AUTHOR SET AUTHOR=$GET(TMGOUT(8925,TMGIENS,1202),"? AUTHOR")
 | 
|---|
| 129 |         NEW DATE SET DATE=$PIECE($GET(^TIU(8925,IEN,0)),"^",7) ;"Custom formatting
 | 
|---|
| 130 |         SET DATE=$$FMTE^XLFDT(DATE,7)  ;"7 --> YYYY/MM/DD@time
 | 
|---|
| 131 |         SET DATE=$PIECE(DATE,"@",1) ;"remove time
 | 
|---|
| 132 |         NEW MONTH SET MONTH=$PIECE(DATE,"/",2)
 | 
|---|
| 133 |         IF $LENGTH(MONTH)=1 SET MONTH="0"_MONTH SET $PIECE(DATE,"/",2)=MONTH
 | 
|---|
| 134 |         NEW DAY SET DAY=$PIECE(DATE,"/",3)
 | 
|---|
| 135 |         IF $LENGTH(DAY)=1 SET DAY="0"_DAY SET $PIECE(DATE,"/",3)=DAY
 | 
|---|
| 136 |         SET RESULT=DATE_"; "_TITLE_" - "_AUTHOR
 | 
|---|
| 137 | FMTDN   QUIT RESULT
 | 
|---|
| 138 |         ;
 | 
|---|
| 139 | PDGETSS(TMGRESULT,TMGPARAMS) ;
 | 
|---|
| 140 |         ;"Purpose -- Get a subset of list for TORCombobox
 | 
|---|
| 141 |         ;"    NOTE: This should only be called after a successful call to 
 | 
|---|
| 142 |         ;"         PDPREPSS^TMGRPCS1 which will prepair the list.
 | 
|---|
| 143 |         ;"Input: TMGRESULT -- PASS BY REFERENCE.  AN OUT PARAMETER
 | 
|---|
| 144 |         ;"       TMGPARAMS -- Input:  StartFrom^Direction^MaxCount  
 | 
|---|
| 145 |         ;"              StartFrom -- OPTIONAL -- text to $ORDER() from
 | 
|---|
| 146 |         ;"              Direction -- $ORDER(xx,Direction) direction (should be 1 or -1) -- OPTIONAL
 | 
|---|
| 147 |         ;"              MaxCount -- OPTIONAL.  Default is 44 values returned.
 | 
|---|
| 148 |         ;"Results: TMGRESULT(0)="1^Success" or "-1^Message"
 | 
|---|
| 149 |         ;"         TMGRESULT(1)=IEN^2010/6/10; OFFICE NOTE - TOPPENBERG,KEVIN   <-- Example
 | 
|---|
| 150 |         ;"         TMGRESULT(2)=IEN^A_Note_Identifier
 | 
|---|
| 151 |         ;
 | 
|---|
| 152 |         NEW TMGFROM SET TMGFROM=$PIECE(TMGPARAMS,"^",1)
 | 
|---|
| 153 |         NEW TMGDIR SET TMGDIR=$PIECE(TMGPARAMS,"^",2)
 | 
|---|
| 154 |         IF TMGDIR'=-1 SET TMGDIR=1
 | 
|---|
| 155 |         NEW TMGMAXCT SET TMGMAXCT=+$PIECE(TMGPARAMS,"^",3)
 | 
|---|
| 156 |         IF TMGMAXCT=0 SET TMGMAXCT=44
 | 
|---|
| 157 |         ;     
 | 
|---|
| 158 |         NEW TMGREF SET TMGREF=$NAME(^TMG("TMP","SEARCH","SRCHTIU",$J,"OR LIST"))
 | 
|---|
| 159 |         NEW TMGI SET TMGI=0
 | 
|---|
| 160 |         FOR  SET TMGFROM=$ORDER(@TMGREF@(TMGFROM),TMGDIR) QUIT:(TMGFROM="")!(TMGI'<TMGMAXCT)  DO
 | 
|---|
| 161 |         . NEW TMGIEN SET TMGIEN=""
 | 
|---|
| 162 |         . FOR  SET TMGIEN=$ORDER(@TMGREF@(TMGFROM,TMGIEN),TMGDIR) QUIT:(+TMGIEN'>0)!(TMGI'<TMGMAXCT)  DO
 | 
|---|
| 163 |         . . SET TMGI=TMGI+1
 | 
|---|
| 164 |         . . SET TMGRESULT(TMGI)=TMGIEN_"^"_TMGFROM
 | 
|---|
| 165 |         ;
 | 
|---|
| 166 |         IF $DATA(TMGRESULT)=0 SET TMGRESULT(0)="-1^NO RESULTS"
 | 
|---|
| 167 |         ELSE  SET TMGRESULT(0)="1^Success"        
 | 
|---|
| 168 |         QUIT                
 | 
|---|
| 169 |         ;    
 | 
|---|
| 170 |         
 | 
|---|
| 171 | 
 | 
|---|