[613] | 1 | RORXU001 ;HCIOFO/BH,SG - REPORT UTILITIES ; 1/24/06 8:14am
|
---|
| 2 | ;;1.5;CLINICAL CASE REGISTRIES;;Feb 17, 2006
|
---|
| 3 | ;
|
---|
| 4 | ; This routine uses the following IAs:
|
---|
| 5 | ;
|
---|
| 6 | ; #92 Read access to the file #45 (controlled)
|
---|
| 7 | ; fields 3 and 4.
|
---|
| 8 | ; #1480 Read access to the file #405 (controlled)
|
---|
| 9 | ; #1894 ENCEVENT^PXKENC (controlled)
|
---|
| 10 | ;
|
---|
| 11 | Q
|
---|
| 12 | ;
|
---|
| 13 | ;***** DOUBLE CHECKS THE ADMISSION
|
---|
| 14 | ;
|
---|
| 15 | ; DFN Patient IEN
|
---|
| 16 | ; VAINDT Admission date
|
---|
| 17 | ; .DISDT Discharge date
|
---|
| 18 | ;
|
---|
| 19 | ; Return Values:
|
---|
| 20 | ; 0 Ok
|
---|
| 21 | ; 1 Invalid admission date
|
---|
| 22 | ;
|
---|
| 23 | CHKADM(DFN,VAINDT,DISDT) ;
|
---|
| 24 | N IEN,RORMSG,VADMVT,VAHOW,VAROOT
|
---|
| 25 | D ADM^VADPT2 Q:'VADMVT 1
|
---|
| 26 | S IEN=+$$GET1^DIQ(405,VADMVT,.17,"I",,"RORMSG")
|
---|
| 27 | S:IEN>0 DISDT=$$GET1^DIQ(405,IEN_",",.01,"I",,"RORMSG")
|
---|
| 28 | Q 0
|
---|
| 29 | ;
|
---|
| 30 | ;***** DATE OF THE MOST RECENT VISIT TO ANY OF THE SELECTED CLINICS
|
---|
| 31 | ;
|
---|
| 32 | ; PATIEN Patient IEN (file #2)
|
---|
| 33 | ;
|
---|
| 34 | ; .RORCLIN Reference to a local array of Clinics, the subscripts
|
---|
| 35 | ; are IEN's from file #44 or will be a single element
|
---|
| 36 | ; array with a subscript of "ALL", which will denote
|
---|
| 37 | ; all clinics (i.e. CLIN("ALL")="").
|
---|
| 38 | ;
|
---|
| 39 | ; Return Values:
|
---|
| 40 | ; 0 The patient has never been seen at any of the given
|
---|
| 41 | ; clinics
|
---|
| 42 | ; >0 Date of the most recent visit to one of the selected
|
---|
| 43 | ; clinics
|
---|
| 44 | ;
|
---|
| 45 | LASTVSIT(PATIEN,RORCLIN) ;
|
---|
| 46 | N QUERY,RORDT,RORLAST
|
---|
| 47 | S RORDT=$$FMADD^XLFDT($$DT^XLFDT,1),RORLAST=0
|
---|
| 48 | ;---
|
---|
| 49 | D OPEN^SDQ(.QUERY)
|
---|
| 50 | D INDEX^SDQ(.QUERY,"PATIENT","SET")
|
---|
| 51 | D PAT^SDQ(.QUERY,PATIEN,"SET")
|
---|
| 52 | D SCANCB^SDQ(.QUERY,"D SDQSCAN2^RORXU001(Y,Y0)","SET")
|
---|
| 53 | D ACTIVE^SDQ(.QUERY,"TRUE","SET")
|
---|
| 54 | D SCAN^SDQ(.QUERY,"FORWARD")
|
---|
| 55 | D CLOSE^SDQ(.QUERY)
|
---|
| 56 | ;---
|
---|
| 57 | Q RORLAST
|
---|
| 58 | ;
|
---|
| 59 | ;***** LOADS PTF DATA AND CHECKS IF THE RECORD SHOULD BE SKIPPED
|
---|
| 60 | ;
|
---|
| 61 | ; PTFIEN IEN of the PTF record
|
---|
| 62 | ;
|
---|
| 63 | ; [FLAGS] Flags to control processing
|
---|
| 64 | ; F Skip fee-basis records
|
---|
| 65 | ; P Skip non-PTF records
|
---|
| 66 | ;
|
---|
| 67 | ; [.ADMDT] Admission date is returned via this parameter
|
---|
| 68 | ; [.DISDT] Discharge date is returned via this parameter
|
---|
| 69 | ; [.SUFFIX] Suffix is returned via this parameter
|
---|
| 70 | ; [.STATUS] Status is returned via this parameter
|
---|
| 71 | ; [.FACILITY] Facility number is returned via this parameter
|
---|
| 72 | ;
|
---|
| 73 | ; Return Values:
|
---|
| 74 | ; <0 Error code
|
---|
| 75 | ; 0 Ok
|
---|
| 76 | ; 1 Skip this record
|
---|
| 77 | ;
|
---|
| 78 | PTF(PTFIEN,FLAGS,ADMDT,DISDT,SUFFIX,STATUS,FACILITY) ;
|
---|
| 79 | N FLDLST,IENS,RORBUF,RORMSG
|
---|
| 80 | S FLAGS=$G(FLAGS),IENS=(+PTFIEN)_","
|
---|
| 81 | S FLDLST="2;3;5;6;70"
|
---|
| 82 | S:FLAGS["F" FLDLST=FLDLST_";4" ; FEE BASIS
|
---|
| 83 | S:FLAGS["P" FLDLST=FLDLST_";11" ; TYPE OF RECORD
|
---|
| 84 | ;--- Load the data
|
---|
| 85 | D GETS^DIQ(45,IENS,FLDLST,"I","RORBUF","RORMSG")
|
---|
| 86 | Q:$G(DIERR) $$DBS^RORERR("RORMSG",-9,,,45,IENS)
|
---|
| 87 | ;---
|
---|
| 88 | S ADMDT=$G(RORBUF(45,IENS,2,"I")) ; ADMISSION DATE
|
---|
| 89 | S FACILITY=$G(RORBUF(45,IENS,3,"I")) ; FACILITY
|
---|
| 90 | S SUFFIX=$G(RORBUF(45,IENS,5,"I")) ; SUFFIX
|
---|
| 91 | S STATUS=$G(RORBUF(45,IENS,6,"I")) ; STATUS
|
---|
| 92 | S DISDT=$G(RORBUF(45,IENS,70,"I")) ; DISCHARGE DATE
|
---|
| 93 | Q:ADMDT'>0 1
|
---|
| 94 | ;--- Skip a non-PTF record
|
---|
| 95 | I FLAGS["P" Q:$G(RORBUF(45,IENS,11,"I"))'=1 1
|
---|
| 96 | ;--- Skip a fee basis record
|
---|
| 97 | I FLAGS["F" Q:$G(RORBUF(45,IENS,4,"I")) 1
|
---|
| 98 | ;--- Success
|
---|
| 99 | Q 0
|
---|
| 100 | ;
|
---|
| 101 | ;**** CALL-BACK ENTRY POINTS FOR THE SDQ API
|
---|
| 102 | SDQSCAN1(Y,Y0) ;
|
---|
| 103 | N TMP
|
---|
| 104 | ;--- Check the clinic
|
---|
| 105 | I '$$PARAM^RORTSK01("CLINICS","ALL") D Q:'TMP
|
---|
| 106 | . S TMP=$D(RORTSK("PARAMS","CLINICS","C",+$P(Y0,U,4)))
|
---|
| 107 | ;--- Count the encounters
|
---|
| 108 | S RORENCNT=RORENCNT+1
|
---|
| 109 | Q
|
---|
| 110 | ;
|
---|
| 111 | SDQSCAN2(Y,Y0) ;
|
---|
| 112 | N DTX,TMP
|
---|
| 113 | ;--- Check the clinic
|
---|
| 114 | I '$$PARAM^RORTSK01("CLINICS","ALL") D Q:'TMP
|
---|
| 115 | . S TMP=$D(RORTSK("PARAMS","CLINICS","C",+$P(Y0,U,4)))
|
---|
| 116 | ;--- Date of the visit
|
---|
| 117 | S DTX=+$P(Y0,U) S:(DTX>RORLAST)&(DTX<RORDT) RORLAST=DTX
|
---|
| 118 | Q
|
---|
| 119 | ;
|
---|
| 120 | ;***** CHECKS IF THE PATIENT WAS SEEN AT SELECTED CLINICS
|
---|
| 121 | ;
|
---|
| 122 | ; RORSDT Start Date for search (FileMan).
|
---|
| 123 | ; Time is ignored and the beginning of the day is
|
---|
| 124 | ; considered as the boundary (ST\1).
|
---|
| 125 | ;
|
---|
| 126 | ; ROREDT End Date for search (FileMan).
|
---|
| 127 | ; Time is ignored and the end of the day is
|
---|
| 128 | ; considered as the boundary (ED\1+1).
|
---|
| 129 | ;
|
---|
| 130 | ; PATIEN Patient IEN (file #2)
|
---|
| 131 | ;
|
---|
| 132 | ; Return Values:
|
---|
| 133 | ; 0 The patient was not seen at any of the given clinics
|
---|
| 134 | ; during the provided time frame
|
---|
| 135 | ; 1 The patient was seen
|
---|
| 136 | ;
|
---|
| 137 | SEEN(RORSDT,ROREDT,PATIEN) ;
|
---|
| 138 | N QUERY,RORENCNT
|
---|
| 139 | S RORENCNT=0
|
---|
| 140 | ;---
|
---|
| 141 | D OPEN^SDQ(.QUERY)
|
---|
| 142 | D INDEX^SDQ(.QUERY,"PATIENT/DATE","SET")
|
---|
| 143 | D PAT^SDQ(.QUERY,PATIEN,"SET")
|
---|
| 144 | D DATE^SDQ(.QUERY,RORSDT\1,$$FMADD^XLFDT(ROREDT\1,1),"SET")
|
---|
| 145 | D SCANCB^SDQ(.QUERY,"D SDQSCAN1^RORXU001(Y,Y0)","SET")
|
---|
| 146 | D ACTIVE^SDQ(.QUERY,"TRUE","SET")
|
---|
| 147 | D SCAN^SDQ(.QUERY,"FORWARD")
|
---|
| 148 | D CLOSE^SDQ(.QUERY)
|
---|
| 149 | ;---
|
---|
| 150 | Q (RORENCNT>0)
|
---|