| 1 | RORRP022 ;HCIOFO/SG - RPC: SELECTION RULES ; 8/2/05 11:15am | 
|---|
| 2 | ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006 | 
|---|
| 3 | ; | 
|---|
| 4 | Q | 
|---|
| 5 | ; | 
|---|
| 6 | ;***** LOADS THE SELECTION RULES FROM THE REGISTRY RECORD | 
|---|
| 7 | ; RPC: [ROR PATIENT SELECTION RULES] | 
|---|
| 8 | ; | 
|---|
| 9 | ; .RESULTS      Reference to a local variable where the results | 
|---|
| 10 | ;               are returned to. | 
|---|
| 11 | ; | 
|---|
| 12 | ; REGIEN        Registry IEN | 
|---|
| 13 | ; | 
|---|
| 14 | ; PATIEN        IEN of the registry patient (DFN) | 
|---|
| 15 | ; | 
|---|
| 16 | ; Return Values: | 
|---|
| 17 | ; | 
|---|
| 18 | ; A negative value of the first "^"-piece of the RESULTS(0) | 
|---|
| 19 | ; indicates an error (see the RPCSTK^RORERR procedure for more | 
|---|
| 20 | ; details). | 
|---|
| 21 | ; | 
|---|
| 22 | ; Otherwise, number of selection rules is returned in the RESULTS(0) | 
|---|
| 23 | ; and the subsequent nodes of the array contain the rules. | 
|---|
| 24 | ; | 
|---|
| 25 | ; RESULTS(0)            Number of selection rules | 
|---|
| 26 | ; | 
|---|
| 27 | ; RESULTS(i)            Selection Rule | 
|---|
| 28 | ;                         ^01: IEN in the SELECTION RULE multiple | 
|---|
| 29 | ;                              of the ROR REGISTRY RECORD file | 
|---|
| 30 | ;                         ^02: IEN of the Rule (in the | 
|---|
| 31 | ;                              ROR SELECTION RULE file) | 
|---|
| 32 | ;                         ^03: Name of the Rule | 
|---|
| 33 | ;                         ^04: Date (FileMan) | 
|---|
| 34 | ;                         ^05: Location IEN  (Institution IEN) | 
|---|
| 35 | ;                         ^06: Location Name (Institution Name) | 
|---|
| 36 | ;                         ^07: Short Description | 
|---|
| 37 | ; | 
|---|
| 38 | PTRULES(RESULTS,REGIEN,PATIEN) ; | 
|---|
| 39 | N BUF,CNT,I,IEN,IENS,RC,RORBUF,RORMSG,TMP | 
|---|
| 40 | D CLEAR^RORERR("PTRULES^RORRP022",1) | 
|---|
| 41 | K RESULTS  S RESULTS(0)=0 | 
|---|
| 42 | ;--- Check the parameters | 
|---|
| 43 | S RC=0  D  I RC<0  D RPCSTK^RORERR(.RESULTS,RC)  Q | 
|---|
| 44 | . ;--- Registry IEN | 
|---|
| 45 | . I $G(REGIEN)'>0  D  Q | 
|---|
| 46 | . . S RC=$$ERROR^RORERR(-88,,,,"REGIEN",$G(REGIEN)) | 
|---|
| 47 | . S REGIEN=+REGIEN | 
|---|
| 48 | . ;--- Patient IEN | 
|---|
| 49 | . I $G(PATIEN)'>0  D  Q | 
|---|
| 50 | . . S RC=$$ERROR^RORERR(-88,,,,"PATIEN",$G(PATIEN)) | 
|---|
| 51 | . S PATIEN=+PATIEN | 
|---|
| 52 | ;--- Get the IEN of the registry record | 
|---|
| 53 | S IEN=$$PRRIEN^RORUTL01(PATIEN,REGIEN)  Q:IEN'>0 | 
|---|
| 54 | ;--- Load the selection rules | 
|---|
| 55 | S IENS=","_IEN_",",TMP="@;.01I;.01E;1I;2I;2E" | 
|---|
| 56 | D LIST^DIC(798.01,IENS,TMP,"P",,,,"AD",,,"RORBUF","RORMSG") | 
|---|
| 57 | I $G(DIERR)  D  D RPCSTK^RORERR(.RESULTS,RC)  Q | 
|---|
| 58 | . S RC=$$DBS^RORERR("RORMSG",-9,,,798.01,IENS) | 
|---|
| 59 | ;--- Populate the output array | 
|---|
| 60 | S (CNT,I)=0 | 
|---|
| 61 | F  S I=$O(RORBUF("DILIST",I))  Q:I'>0  D | 
|---|
| 62 | . S BUF=RORBUF("DILIST",I,0),IEN=+$P(BUF,U,2)  Q:IEN'>0 | 
|---|
| 63 | . S CNT=CNT+1,RESULTS(CNT)=BUF | 
|---|
| 64 | . S TMP=$$GET1^DIQ(798.2,IEN_",",4,,,"RORMSG") | 
|---|
| 65 | . S $P(RESULTS(CNT),U,7)=$S(TMP'="":TMP,1:$P(BUF,U,3)) | 
|---|
| 66 | S RESULTS(0)=CNT | 
|---|
| 67 | Q | 
|---|