| 1 | DVBCHS0 ;ALB/JRP - C & P EXTRACT FOR HEALTH SUMMARY;11-JAN-95 | 
|---|
| 2 | ;;2.7;AMIE;;Apr 10, 1995 | 
|---|
| 3 | HSCP(PATPTR,INVBEGDT,INVENDDT,OUTCODE,ARRAY) ;MAIN ENTRY POINT | 
|---|
| 4 | ;INPUT  : PATPTR - Pointer to PATIENT file (#2) | 
|---|
| 5 | ;         INVBEGDT - Beginning date in inverse FileMan format | 
|---|
| 6 | ;                  - Defaults to one year before today | 
|---|
| 7 | ;         INVENDDT - Ending date in inverse FileMan format | 
|---|
| 8 | ;                  - Defaults to today | 
|---|
| 9 | ;         OUTCODE - Flag indicating which optional nodes to return | 
|---|
| 10 | ;                 0 = Do not return any optional nodes | 
|---|
| 11 | ;                 1 = Node 1 should also be returned | 
|---|
| 12 | ;                 2 = Node 2 should also be returned | 
|---|
| 13 | ;                 3 = Nodes 1 & 2 should also be returned (default) | 
|---|
| 14 | ;         ARRAY - Where to store output (full global reference) | 
|---|
| 15 | ;               - Defaults to ^TMP("DVBC",$J) | 
|---|
| 16 | ; | 
|---|
| 17 | ;OUTPUT : None | 
|---|
| 18 | ;      ARRAY(InvExDt,Type,0) = Code ^ DATE OF EXAM [.06] | 
|---|
| 19 | ;            ^ EXAM TYPE [.03] ^ EXAMINING PHYSICIAN [.07] | 
|---|
| 20 | ;            ^ PRIORITY OF EXAM [396.3;9] | 
|---|
| 21 | ; -->  ARRAY(InvExDt,Type,1) = ROUTING LOCATION [396.3;24] | 
|---|
| 22 | ;            ^ OWNER DOMAIN [396.3;28] ^ TRANSFERRED OUT TO [62] | 
|---|
| 23 | ; -->  ARRAY(InvExDt,Type,2) = REQUEST STATUS [396.3;17] | 
|---|
| 24 | ;            ^ APPROVED BY [396.3;25] ^ APPROVAL DATE/TIME [396.3;26] | 
|---|
| 25 | ;      ARRAY(InvExDt,Type,"RES",0) = Number of lines in EXAM RESULTS | 
|---|
| 26 | ;      ARRAY(InvExDt,Type,"RES",X) = Line X of EXAM RESULTS [70] | 
|---|
| 27 | ; | 
|---|
| 28 | ;   Subscripts: | 
|---|
| 29 | ;     InvExDt - Inverse FileMan date of DATE OF EXAM [.06] | 
|---|
| 30 | ;     Type - Poiner value of EXAM TYPE [.03] | 
|---|
| 31 | ; | 
|---|
| 32 | ;   Code used as follows: | 
|---|
| 33 | ;     1 = Exam was performed locally | 
|---|
| 34 | ;     2 = Exam was performed by another facility | 
|---|
| 35 | ;     3 = Exam was performed locally for another facility | 
|---|
| 36 | ; | 
|---|
| 37 | ;   All dates will be in the FileMan format | 
|---|
| 38 | ; | 
|---|
| 39 | ;   With the exception of dates, 'N/A' (not applicable) and 'UNKNOWN' | 
|---|
| 40 | ;   will be used for field values when appropriate | 
|---|
| 41 | ; | 
|---|
| 42 | ;   Optional nodes are marked by an arrow (-->) | 
|---|
| 43 | ; | 
|---|
| 44 | ;NOTES  : Output array will be initialized (KILLed) | 
|---|
| 45 | ;       : Information for an exam is only returned when | 
|---|
| 46 | ;           1. The exam status is COMPLETED | 
|---|
| 47 | ;           2. The status of the request containing the exam is | 
|---|
| 48 | ;              a) RELEASED TO RO, NOT PRINTED | 
|---|
| 49 | ;              b) COMPLETED, PRINTED BY RO | 
|---|
| 50 | ;              c) COMPLETED, TRANSFERRED OUT | 
|---|
| 51 | ; | 
|---|
| 52 | ; | 
|---|
| 53 | ;CHECK INPUT/SET DEFAULTS | 
|---|
| 54 | Q:('$D(^DPT((+$G(PATPTR)),0))) | 
|---|
| 55 | S INVBEGDT=+$G(INVBEGDT) | 
|---|
| 56 | S:('INVBEGDT) INVBEGDT=9999999-(DT-10000) | 
|---|
| 57 | S INVENDDT=+$G(INVENDDT) | 
|---|
| 58 | S:('INVENDDT) INVENDDT=9999999-DT | 
|---|
| 59 | S OUTCODE=$G(OUTCODE) | 
|---|
| 60 | S:((OUTCODE="")!(OUTCODE>3)!(OUTCODE<0)) OUTCODE=3 | 
|---|
| 61 | S:($G(ARRAY)="") ARRAY="^TMP(""DVBC"",$J)" | 
|---|
| 62 | ;KILL OUTPUT ARRAY | 
|---|
| 63 | K @ARRAY | 
|---|
| 64 | ;DECLARE VARIABLES | 
|---|
| 65 | N BEGDATE,ENDDATE,TYPEPTR,EXAMPTR,TMP,NODE0 | 
|---|
| 66 | ;CONVERT INVERSE DATES TO NORMAL DATES | 
|---|
| 67 | S BEGDATE=9999999-INVBEGDT | 
|---|
| 68 | S ENDDATE=9999999-INVENDDT | 
|---|
| 69 | ;NO EXAMS ON FILE | 
|---|
| 70 | Q:('$D(^DVB(396.4,"APS",PATPTR))) | 
|---|
| 71 | ;LOOK FOR COMPLETED EXAMS | 
|---|
| 72 | S TYPEPTR=0 | 
|---|
| 73 | F  S TYPEPTR=+$O(^DVB(396.4,"APS",PATPTR,TYPEPTR)) Q:('TYPEPTR)  D | 
|---|
| 74 | .S EXAMPTR=0 | 
|---|
| 75 | .F  S EXAMPTR=+$O(^DVB(396.4,"APS",PATPTR,TYPEPTR,"C",EXAMPTR)) Q:('EXAMPTR)  D | 
|---|
| 76 | ..;GET ZERO NODE OF EXAM | 
|---|
| 77 | ..S NODE0=$G(^DVB(396.4,EXAMPTR,0)) | 
|---|
| 78 | ..;MAKE SURE EXAM IS WITHIN DATE RANGE | 
|---|
| 79 | ..S TMP=+$P(NODE0,"^",6) | 
|---|
| 80 | ..Q:(('TMP)!(TMP<BEGDATE)!(TMP>ENDDATE)) | 
|---|
| 81 | ..;MAKE SURE REQUEST CONTAINING EXAM HAS BEEN RELEASED | 
|---|
| 82 | ..S TMP=+$P(NODE0,"^",2) | 
|---|
| 83 | ..Q:('TMP) | 
|---|
| 84 | ..S TMP=$P($G(^DVB(396.3,TMP,0)),"^",18) | 
|---|
| 85 | ..Q:((TMP'="C")&(TMP'="R")&(TMP'="CT")) | 
|---|
| 86 | ..;SET NODE ZERO OF OUTPUT | 
|---|
| 87 | ..D OUT0^DVBCHS1(EXAMPTR,ARRAY) | 
|---|
| 88 | ..;SET NODE 'RES' OF OUTPUT | 
|---|
| 89 | ..D OUTRES^DVBCHS1(EXAMPTR,ARRAY) | 
|---|
| 90 | ..Q:('OUTCODE) | 
|---|
| 91 | ..;SET NODE ONE OF OUTPUT (OPTIONAL) | 
|---|
| 92 | ..D:((OUTCODE=1)!(OUTCODE=3)) OUT1^DVBCHS2(EXAMPTR,ARRAY) | 
|---|
| 93 | ..;SET NODE TWO OF OUTPUT (OPTIONAL) | 
|---|
| 94 | ..D:((OUTCODE=2)!(OUTCODE=3)) OUT2^DVBCHS2(EXAMPTR,ARRAY) | 
|---|
| 95 | Q | 
|---|