[613] | 1 | RORAPI01 ;HCIOFO/SG - CLINICAL REGISTRIES API ; 5/12/05 1:59pm
|
---|
| 2 | ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006
|
---|
| 3 | ;
|
---|
| 4 | ;***** EXAMPLE
|
---|
| 5 | ;
|
---|
| 6 | N BUF,IPD,IRD,PATIEN,RC,REGIEN
|
---|
| 7 | W !," Patient Registries"
|
---|
| 8 | W !," ------- ----------"
|
---|
| 9 | ;--- Initialize the patient iterator
|
---|
| 10 | S RC=$$PATITER^RORAPI01(.IPD,"VA HEPC")
|
---|
| 11 | I RC<0 W "RC= ",RC,! Q
|
---|
| 12 | ;--- Browse through the registry patients
|
---|
| 13 | F S PATIEN=$$NEXTPAT^RORAPI01(.IPD) Q:PATIEN'>0 D
|
---|
| 14 | . W !,$J(PATIEN,10)," "
|
---|
| 15 | . ;--- Initialize the registry iterator
|
---|
| 16 | . S RC=$$REGITER^RORAPI01(.IRD,PATIEN)
|
---|
| 17 | . I RC<0 W "RC= ",RC Q
|
---|
| 18 | . ;--- Browse through the patient's registry records
|
---|
| 19 | . S BUF=""
|
---|
| 20 | . F S REGIEN=$$NEXTREG^RORAPI01(.IRD) Q:REGIEN'>0 D
|
---|
| 21 | . . S BUF=BUF_","_REGIEN
|
---|
| 22 | . W $P(BUF,",",2,999)
|
---|
| 23 | ;---
|
---|
| 24 | W !
|
---|
| 25 | Q
|
---|
| 26 | ;
|
---|
| 27 | ;***** RETURNS THE NEXT PATIENT IN THE REGISTRY
|
---|
| 28 | ;
|
---|
| 29 | ; .IDESC Reference to the iterator descriptor created
|
---|
| 30 | ; by PATITER^RORAPI01
|
---|
| 31 | ;
|
---|
| 32 | ; Return Values:
|
---|
| 33 | ; <0 Error code
|
---|
| 34 | ; "" No more patients in the registry
|
---|
| 35 | ; >0 Patient IEN^empty
|
---|
| 36 | ;
|
---|
| 37 | NEXTPAT(IDESC) ;
|
---|
| 38 | N RC
|
---|
| 39 | F D Q:$G(RC)
|
---|
| 40 | . ;--- Get IEN of the next registry record
|
---|
| 41 | . S IDESC("IEN")=$O(^RORDATA(798,"AC",IDESC("REGIEN"),IDESC("IEN")))
|
---|
| 42 | . I IDESC("IEN")'>0 S RC="1^END" Q
|
---|
| 43 | . Q:'$$ACTIVE^RORDD(IDESC("IEN"))
|
---|
| 44 | . ;--- Load the patient IEN (DFN)
|
---|
| 45 | . S RC=$P($G(^RORDATA(798,IDESC("IEN"),0)),U)
|
---|
| 46 | Q $S(RC="1^END":"",1:RC)
|
---|
| 47 | ;
|
---|
| 48 | ;***** RETURNS THE NEXT REGISTRY FOR THE PATIENT
|
---|
| 49 | ;
|
---|
| 50 | ; .IDESC Reference to the iterator descriptor created
|
---|
| 51 | ; by REGITER^RORAPI01
|
---|
| 52 | ;
|
---|
| 53 | ; Return Values:
|
---|
| 54 | ; <0 Error code
|
---|
| 55 | ; "" No more registries for the patient
|
---|
| 56 | ; >0 Registry IEN^empty
|
---|
| 57 | ;
|
---|
| 58 | NEXTREG(IDESC) ;
|
---|
| 59 | N RC
|
---|
| 60 | F D Q:$G(RC)
|
---|
| 61 | . ;--- Get IEN of the next registry record
|
---|
| 62 | . S IDESC("IEN")=$O(^RORDATA(798,"B",IDESC("PATIEN"),IDESC("IEN")))
|
---|
| 63 | . I IDESC("IEN")'>0 S RC="1^END" Q
|
---|
| 64 | . Q:'$$ACTIVE^RORDD(IDESC("IEN"))
|
---|
| 65 | . ;--- Load the registry IEN
|
---|
| 66 | . S RC=$P($G(^RORDATA(798,IDESC("IEN"),0)),U,2)
|
---|
| 67 | Q $S(RC="1^END":"",1:RC)
|
---|
| 68 | ;
|
---|
| 69 | ;***** CREATES AN ITERATOR OF PATIENTS IN THE REGISTRY
|
---|
| 70 | ;
|
---|
| 71 | ; .IDESC Reference to a local variable where an iterator
|
---|
| 72 | ; descriptor will be created
|
---|
| 73 | ; REGNAME Registry name
|
---|
| 74 | ; [MODE] Bit flags that define iteration mode (3 by default)
|
---|
| 75 | ; 1 Active patients
|
---|
| 76 | ; 2 Reserved
|
---|
| 77 | ;
|
---|
| 78 | ; Return Values:
|
---|
| 79 | ; <0 Error code
|
---|
| 80 | ; 0 Ok
|
---|
| 81 | ;
|
---|
| 82 | PATITER(IDESC,REGNAME,MODE) ;
|
---|
| 83 | N REGIEN K IDESC
|
---|
| 84 | ;--- Get an IEN of the Registry Parameters
|
---|
| 85 | S REGIEN=$$REGIEN^RORUTL02(REGNAME)
|
---|
| 86 | Q:REGIEN<0 REGIEN
|
---|
| 87 | ;--- Setup the descriptor
|
---|
| 88 | S MODE=$S($G(MODE):MODE,1:3)
|
---|
| 89 | S IDESC("REGNAME")=REGNAME
|
---|
| 90 | S IDESC("REGIEN")=REGIEN
|
---|
| 91 | S IDESC("ACT")=MODE#2
|
---|
| 92 | S IDESC("ROOT")=$$ROOT^DILFD(798,"",1)
|
---|
| 93 | S IDESC("IEN")=0
|
---|
| 94 | Q 0
|
---|
| 95 | ;
|
---|
| 96 | ;***** CREATES AN ITERATOR OF THE PATIENT REGISTRIES
|
---|
| 97 | ;
|
---|
| 98 | ; .IDESC Reference to a local variable where an iterator
|
---|
| 99 | ; descriptor will be created
|
---|
| 100 | ; PATIEN Patient IEN
|
---|
| 101 | ; [MODE] Bit flags that define iteration mode (3 by default)
|
---|
| 102 | ; 1 Registries where the patient is active
|
---|
| 103 | ; 2 Reserved
|
---|
| 104 | ;
|
---|
| 105 | ; Return Values:
|
---|
| 106 | ; <0 Error code
|
---|
| 107 | ; 0 Ok
|
---|
| 108 | ;
|
---|
| 109 | REGITER(IDESC,PATIEN,MODE) ;
|
---|
| 110 | K IDESC
|
---|
| 111 | ;--- Setup the descriptor
|
---|
| 112 | S MODE=$S($G(MODE):MODE,1:3)
|
---|
| 113 | S IDESC("PATIEN")=PATIEN
|
---|
| 114 | S IDESC("ACT")=MODE#2
|
---|
| 115 | S IDESC("ROOT")=$$ROOT^DILFD(798,"",1)
|
---|
| 116 | S IDESC("IEN")=0
|
---|
| 117 | Q 0
|
---|