| 1 | TMGTIU01 ;TMG/kst-Misc TIU Related Fns;11/08/08
 | 
|---|
| 2 |          ;;1.0;TMG-LIB;**1**;11/08/08
 | 
|---|
| 3 |  ;
 | 
|---|
| 4 |  ;"Kevin Toppenberg MD
 | 
|---|
| 5 |  ;"GNU General Public License (GPL) applies
 | 
|---|
| 6 |  ;"11/08/08
 | 
|---|
| 7 | 
 | 
|---|
| 8 |  ;"---------------------------------------------------------------------------
 | 
|---|
| 9 |  ;"PUBLIC FUNCTIONS
 | 
|---|
| 10 |  ;"---------------------------------------------------------------------------
 | 
|---|
| 11 |  ;"ENSURVST(PATIENT,VISIT,CLINIC,DOCTOR) -- Ensure that patient has an entry in the VISIT file.
 | 
|---|
| 12 |  ;"GetPCEInfo(.array,DFN,DT,LocIEN) -- Get Patient Care Event info for patient on given date.
 | 
|---|
| 13 | 
 | 
|---|
| 14 |  ;"---------------------------------------------------------------------------
 | 
|---|
| 15 |  ;"PRIVATE FUNCTIONS
 | 
|---|
| 16 |  ;"---------------------------------------------------------------------------
 | 
|---|
| 17 | 
 | 
|---|
| 18 | 
 | 
|---|
| 19 | 
 | 
|---|
| 20 |  ;"---------------------------------------------------------------------------
 | 
|---|
| 21 | 
 | 
|---|
| 22 | T1
 | 
|---|
| 23 |         new DFN,IEN,Y,X,DIC
 | 
|---|
| 24 |         set DIC=2,DIC(0)="MAEQ"
 | 
|---|
| 25 |         do ^DIC write !
 | 
|---|
| 26 |         if +Y'>0 goto TDone
 | 
|---|
| 27 |         set DFN=+Y
 | 
|---|
| 28 | 
 | 
|---|
| 29 |         new locIEN
 | 
|---|
| 30 |         set DIC=44 ;"hospital location
 | 
|---|
| 31 |         do ^DIC write !
 | 
|---|
| 32 |         if +Y'>0 goto TDone
 | 
|---|
| 33 |         set locIEN=+Y
 | 
|---|
| 34 | 
 | 
|---|
| 35 |         new %DT,selDT
 | 
|---|
| 36 |         set %DT="AE"
 | 
|---|
| 37 |         do ^%DT write !
 | 
|---|
| 38 |         if Y'>0 goto TDone
 | 
|---|
| 39 |         set setDT=Y
 | 
|---|
| 40 | 
 | 
|---|
| 41 |         new array
 | 
|---|
| 42 |         do GetPCEInfo(.array,DFN,setDT,locIEN)
 | 
|---|
| 43 |         if $data(array) zwr array
 | 
|---|
| 44 | 
 | 
|---|
| 45 | TDone
 | 
|---|
| 46 |         quit
 | 
|---|
| 47 | 
 | 
|---|
| 48 | 
 | 
|---|
| 49 | ENSURVST(PATIENT,VISIT,CLINIC,DOCTOR) ;
 | 
|---|
| 50 |         ;"Purpose: To ensure that patient has an entry in the VISIT file.
 | 
|---|
| 51 |         ;"Input: PATIENT: the name and DOB of the patient.  format:
 | 
|---|
| 52 |         ;"              'LName,FName I^12/12/1912'
 | 
|---|
| 53 |         ;"       VISIT: Date and time of visit.  Format: 12/12/1912@23:15 (military time)
 | 
|---|
| 54 |         ;"       CLINIC: the name of the clinic, to match entry in HOSPITAL LOCATION file
 | 
|---|
| 55 |         ;"       DOCTOR: the name of the provider for the appt, to match entry in NEW PERSON file
 | 
|---|
| 56 |         ;"Results: 1=OK, or 0^Error Message
 | 
|---|
| 57 | 
 | 
|---|
| 58 |         new result set result=1
 | 
|---|
| 59 |         new IEN2,Entry
 | 
|---|
| 60 |         set Entry(.01)=$piece(PATIENT,"^",1)  ;"Name
 | 
|---|
| 61 |         set Entry(.03)=$piece(PATIENT,"^",2)  ;"DOB
 | 
|---|
| 62 | 
 | 
|---|
| 63 |         set IEN2=$$GetDFN2^TMGGDFN(Entry,AutoRegister)
 | 
|---|
| 64 |         if IEN2'>0 do  goto EVDone
 | 
|---|
| 65 |         . set result="0^Patient Name/DOB not registered"
 | 
|---|
| 66 | 
 | 
|---|
| 67 |         new HLIEN,DIC,X,Y
 | 
|---|
| 68 |         set DIC=44  ;"HOSPITAL LOCATION file
 | 
|---|
| 69 |         set DIC(0)="M",X=CLINIC
 | 
|---|
| 70 |         do ^DIC
 | 
|---|
| 71 |         if Y'>0 do  goto EVDone
 | 
|---|
| 72 |         . set result="0^Can't find clinic '"_CLINIC_"' in HOSPITAL LOCATION file"
 | 
|---|
| 73 | 
 | 
|---|
| 74 |         set DIC=200,X=DOCTOR
 | 
|---|
| 75 |         do ^DIC
 | 
|---|
| 76 |         if Y'>0 do  goto EVDone
 | 
|---|
| 77 |         . set result="0^Can't find doctor '"_DOCTOR+"' in NEW PERSON file"
 | 
|---|
| 78 | 
 | 
|---|
| 79 |         new VDT,%DT kill Y
 | 
|---|
| 80 |         set %DT="T",X=VISIT
 | 
|---|
| 81 |         do ^%DT
 | 
|---|
| 82 |         if Y'>0 do  goto EVDone
 | 
|---|
| 83 |         . set result="0^Invalid visit date: '"_VISIT_"'"
 | 
|---|
| 84 | 
 | 
|---|
| 85 | 
 | 
|---|
| 86 | 
 | 
|---|
| 87 | EVDone
 | 
|---|
| 88 |         quit result
 | 
|---|
| 89 | 
 | 
|---|
| 90 | 
 | 
|---|
| 91 | GetPCEInfo(array,DFN,DT,LocIEN)
 | 
|---|
| 92 |         ;"Purpose: to get Patient Care Event info for patient on given date.
 | 
|---|
| 93 |         ;"Input: array -- PASS BY REFERENCE, an OUT PARAMETER.  Prior data killed.
 | 
|---|
| 94 |         ;"       DFN -- the patient IEN
 | 
|---|
| 95 |         ;"       DT -- the Date of the visit in FM format.
 | 
|---|
| 96 |         ;"       LocIEN -- the IEN in the HOSPITAL LOCATION file for the clinic.
 | 
|---|
| 97 |         ;"Output: array is filled, format:
 | 
|---|
| 98 |         ;"              array(VISITDT,#)=InfoLine
 | 
|---|
| 99 |         ;"              array(VISITDT,#)=InfoLine
 | 
|---|
| 100 |         ;"                        ...,1)=HDR^AllowEdit^CPTRequired^VStr^Author^hasCPT
 | 
|---|
| 101 |         ;"                        ...,n)=TYP+^CODE^CAT^NARR^QUAL1^QUAL2 (QUAL1=Primary!Qty, QUAL2=Prv)
 | 
|---|
| 102 |         ;"Results: None
 | 
|---|
| 103 | 
 | 
|---|
| 104 |         kill array
 | 
|---|
| 105 |         new vIEN set vIEN=0
 | 
|---|
| 106 |         for  set vIEN=$order(^AUPNVSIT("C",DFN,vIEN)) quit:(+vIEN'>0)  do
 | 
|---|
| 107 |         . new vDT set vDT=$piece($get(^AUPNVSIT(vIEN,0)),"^",1)
 | 
|---|
| 108 |         . if vDT'>0 quit
 | 
|---|
| 109 |         . new %Y,X,X1,X2 set X1=setDT,X2=vDT
 | 
|---|
| 110 |         . do ^%DTC
 | 
|---|
| 111 |         . if (X'=0)!(%Y=0) quit
 | 
|---|
| 112 |         . new tempArray
 | 
|---|
| 113 |         . do PCE4NOTE^ORWPCE3(.tempArray,,DFN,LocIEN_";"_vDT)
 | 
|---|
| 114 |         . merge array(vDT)=tempArray
 | 
|---|
| 115 |         quit
 | 
|---|
| 116 | 
 | 
|---|