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