Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: HMPROS8

HMPROS8.m

Go to the documentation of this file.
  1. HMPROS8 ;SLC/AGP,ASMR/RRB - Get CPRS User Default Roster List ; 6/11/14 8:38pm
  1. ;;2.0;ENTERPRISE HEALTH MANAGEMENT PLATFORM;**;AUG 17, 2011;Build 63
  1. ;Per VA Directive 6402, this routine should not be modified.
  1. ;
  1. Q
  1. ;
  1. BLDSORT(NODE,SRC,SORT,SEQ) ; emulate TStringList Sort found in CPRS
  1. ; append separator to ensure string sort (rather than numeric)
  1. ; append SEQ to avoid dropping node where SORTKEY is duplicated
  1. ; SORT: A:Alphabetic;R:Room/Bed;P:Appointment Date;T:Terminal Digit;S:Source
  1. I $E(NODE)=U QUIT ; i.e., "^No patients found"
  1. N SORTKEY,S
  1. S NODE=$G(NODE),S=" "
  1. S SORTKEY=$P(NODE,U,2)_S_SEQ ; default alphabetic by name
  1. I SRC="C",(SORT="P") S SORTKEY=$P(NODE,U,4)_S_SEQ
  1. I SRC="M" D
  1. .I SORT="S" S SORTKEY=$P(NODE,U,3)_S_$P(NODE,U,8)_S_$P(NODE,U,2)_S_SEQ
  1. .I SORT="P" S SORTKEY=$P(NODE,U,8)_S_$P(NODE,U,2)_S_SEQ
  1. .I SORT="T" S SORTKEY=$P(NODE,U,5)_S_SEQ
  1. I SRC="W",(SORT="R") S SORTKEY=$P(NODE,U,3)_S_$P(NODE,U,2)_S_SEQ
  1. I '$L(SORTKEY) S SORTKEY=S_SEQ
  1. S ^TMP("HMPSORT",$J,$P(SRC,U,2)_":"_SORT,SORTKEY)=NODE
  1. Q
  1. ;
  1. CHKPAT(PATIENTS,SERVER) ;
  1. N ARGS,OUT,PAT,STATUS
  1. S ARGS("command")="putPtSubscription"
  1. S ARGS("server")=SERVER
  1. S PAT="" F S PAT=$O(PATIENTS(PAT)) Q:PAT'>0 D
  1. .S STATUS=$G(^HMP(800000,"AITEM",PAT,SERVER))
  1. .I STATUS'="",STATUS>0 Q
  1. .S ARGS("localId")=PAT
  1. .D API^HMPDJFS(.OUT,.ARGS)
  1. Q
  1. ;
  1. GETDLIST(RESULT,SERVER) ;
  1. N APPT,ARRAY,DFN,CNT,ERROR,GBL,GSOURCE,ISOUT,LISTIEN,LROOT,NAME,NODE,PATIENTS
  1. N PATTYPE,PATUID,PID,ROOM,ROOT,SOURCE,SOURCETYPE,TYPE,TYPEI,HMPSRC,HMPSORT,HMPOUT
  1. N XOBDATA S XOBDATA(0)=1
  1. N XWBOS S XWBOS(0)=1
  1. K ^TMP("OR",$J)
  1. S HMPSRC=$$LSTSRC(DUZ)
  1. S LISTIEN=$P(HMPSRC,U,2),HMPSRC=$P(HMPSRC,U)
  1. D DEFSORT^ORQPTQ11(.HMPSORT)
  1. D DEFLIST^ORQPTQ11(.HMPOUT)
  1. S GSOURCE=$S(LISTIEN>0:$$STGSRCE(HMPSRC,LISTIEN),1:"")
  1. K ^TMP("HMPRESULT",$J),^TMP("HMPTEMP",$J),^TMP("HMPSORT",$J)
  1. S CNT=0 F S CNT=$O(^TMP("OR",$J,"PATIENTS",CNT)) Q:CNT'>0 D
  1. .S NODE=$G(^TMP("OR",$J,"PATIENTS",CNT,0))
  1. .D BLDSORT(NODE,HMPSRC,HMPSORT,CNT)
  1. K ^TMP("OR",$J)
  1. D SRTSRC(HMPSORT,HMPSRC,$P($$FDEFSRC^ORQPTQ11(DUZ),U,2))
  1. S GBL=$NA(^TMP("HMPSORT",$J)),CNT=0,LROOT=$L(GBL)-1,ROOT=$E(GBL,1,LROOT)
  1. F S GBL=$Q(@GBL) Q:$E(GBL,1,LROOT)'=ROOT D
  1. .S NODE=@GBL
  1. .S CNT=CNT+1
  1. .S DFN=$P(NODE,U),ROOM=$G(^DPT(DFN,.101)) ;ICR 10035 DE2818 ASF 11/12/15
  1. .S PATIENTS(DFN)=""
  1. .S PID=$$PID^HMPDJFS(DFN)
  1. .S PATTYPE=$P(NODE,U,9)
  1. .S APPT=$S(HMPSRC="M":$P(NODE,U,8),1:$P(NODE,U,4)),TYPE=$P(NODE,U,3),TYPEI=$P(NODE,U,7)
  1. .S SOURCE=$S($G(GSOURCE)'="":GSOURCE,1:$$GTSOURCE(TYPE,TYPEI))
  1. .S ISOUT=$S(PATTYPE="OPT":1,1:0)
  1. .I $P(NODE,U,3)'="" S ^TMP("HMPTEMP",$J,"data","patients",CNT,"sourceDisplayName")=$P(NODE,U,3)
  1. .S ^TMP("HMPTEMP",$J,"data","patients",CNT,"pid")=PID
  1. .S ^TMP("HMPTEMP",$J,"data","patients",CNT,"patientType")=$S(PATTYPE="OPT":"Outpatient",1:"Inpatient")
  1. .I $G(APPT)'="" D SETAPPT(SOURCE,APPT,DFN,CNT)
  1. .;S ^TMP("HMPTEMP",$J,"data","patients",CNT,"appointment")=$$JSONDT^HMPUTILS(APPT)
  1. .I $G(ROOM)'=""!(PATTYPE'="OPT") D STINP(DFN,CNT,ROOM)
  1. .;S ^TMP("HMPTEMP",$J,"data","patients",CNT,"roomBed")=ROOM
  1. .D STPTSRC(SOURCE,CNT)
  1. ;
  1. GETDLSTX ;
  1. D ENCODE^HMPJSON($NA(^TMP("HMPTEMP",$J)),"RESULT","ERROR")
  1. I SERVER'="" D CHKPAT(.PATIENTS,SERVER)
  1. K ^TMP("HMPSORT",$J)
  1. K ^TMP("HMPTEMP",$J)
  1. Q
  1. ;
  1. SETAPPT(SOURCE,APPT,DFN,CNT) ;
  1. N LOC,UID,X
  1. S ^TMP("HMPTEMP",$J,"data","patients",CNT,"appointment")=$$JSONDT^HMPUTILS(APPT)
  1. S UID=$P(SOURCE,U,2),LOC=$P($G(UID),":",5) I LOC'>0 Q
  1. S X="A;"_APPT_";"_+LOC
  1. S ^TMP("HMPTEMP",$J,"data","patients",CNT,"appointmentUid")=$$SETUID^HMPUTILS("appointment",DFN,X)
  1. Q
  1. ;
  1. STINP(DFN,CNT,ROOM) ;
  1. N LOC,NODE,UID,VAIN,WIEN
  1. I ROOM'="" S ^TMP("HMPTEMP",$J,"data","patients",CNT,"roomBed")=ROOM
  1. D INP^VADPT I $G(VAIN(1))="" D KVA^VADPT Q
  1. S ^TMP("HMPTEMP",$J,"data","patients",CNT,"admissionUid")=$$SETUID^HMPUTILS("visit",DFN,"H"_VAIN(1))
  1. S WIEN=+$G(VAIN(4)) I WIEN'>0 D KVA^VADPT Q
  1. S LOC=+$G(^DIC(42,WIEN,44)) ;ICR 10040 DE2818 ASF 11/12/15
  1. S NODE=$P($G(^SC(+LOC,0)),U,1,2) ;ICR 10040 DE2818 ASF 11/12/15
  1. S ^TMP("HMPTEMP",$J,"data","patients",CNT,"locationUid")=$$SETUID^HMPUTILS("location","",LOC,"")
  1. I $P(NODE,U)'="" S ^TMP("HMPTEMP",$J,"data","patients",CNT,"locationName")=$P(NODE,U)
  1. I $P(NODE,U,2)'="" S ^TMP("HMPTEMP",$J,"data","patients",CNT,"locationShortName")=$P(NODE,U,2)
  1. D KVA^VADPT
  1. Q
  1. ;
  1. STPTSRC(SOURCE,CNT) ;
  1. N UID,VAIN
  1. S UID=$P(SOURCE,U,2)
  1. S ^TMP("HMPTEMP",$J,"data","patients",CNT,"sourceUid")=UID
  1. I UID'["location" Q
  1. S ^TMP("HMPTEMP",$J,"data","patients",CNT,"locationUid")=UID
  1. I $P(SOURCE,U,3)'="" S ^TMP("HMPTEMP",$J,"data","patients",CNT,"sourceName")=$P(SOURCE,U,3),^TMP("HMPTEMP",$J,"data","patients",CNT,"locationName")=$P(SOURCE,U,3)
  1. I $P(SOURCE,U,4)'="" S ^TMP("HMPTEMP",$J,"data","patients",CNT,"sourceShortName")=$P(SOURCE,U,4),^TMP("HMPTEMP",$J,"data","patients",CNT,"locationShortName")=$P(SOURCE,U,4)
  1. Q
  1. ;
  1. LSTSRC(ADUZ) ; Return type of list source
  1. ; T:TeamList, W:Ward List, P:Provider List, S:Specialty List, C:Clinic List, M:Combination
  1. N FROM,IEN,SRV
  1. S:'$G(ADUZ) ADUZ=DUZ
  1. S SRV=$G(^VA(200,ADUZ,5)) I +SRV>0 S SRV=$P(SRV,U) ;ICR 10060 DE2818 ASF 11/12/15
  1. S FROM=$$GET^XPAR("USR.`"_ADUZ_"^SRV.`"_+$G(SRV),"ORLP DEFAULT LIST SOURCE",1,"Q")
  1. I FROM="M" Q FROM
  1. I FROM="T" S IEN=$$GET^XPAR("USR^SRV.`"_+$G(SRV),"ORLP DEFAULT TEAM",1,"Q") Q FROM_U_+$G(IEN)
  1. I FROM="W" S IEN=$$GET^XPAR("USR^SRV.`"_+$G(SRV),"ORLP DEFAULT WARD",1,"Q") Q FROM_U_+$G(IEN)
  1. I FROM="P" S IEN=$$GET^XPAR("USR^SRV.`"_+$G(SRV),"ORLP DEFAULT PROVIDER",1,"Q") Q FROM_U_+$G(IEN)
  1. I FROM="S" S IEN=$$GET^XPAR("USR^SRV.`"_+$G(SRV),"ORLP DEFAULT SPECIALTY",1,"Q") Q FROM_U_+$G(IEN)
  1. I FROM="C" S API="ORLP DEFAULT CLINIC "_$$UP^XLFSTR($$DOW^XLFDT(DT)),IEN=$$GET^XPAR("USR^SRV.`"_+$G(ORSRV),API,1,"Q") Q FROM_U_+$G(IEN)
  1. Q FROM
  1. ;
  1. GETCLIST(RESULT,SERVER,ID,START,END) ;
  1. N APPT,CNT,DFN,ITR,NODE,PATIENTS,PID,SOURCE,TEMP,ERROR,HMPARRAY,HMPSORT,S
  1. K ^TMP("HMPTEMP",$J)
  1. D DEFSORT^ORQPTQ11(.HMPSORT)
  1. D CLINPTS2^ORQPTQ2(.HMPARRAY,ID,START,END)
  1. S SOURCE=$$GTSOURCE("Cl",ID)
  1. S S=" " ; separator for sort
  1. S CNT=0 F S CNT=$O(HMPARRAY(CNT)) Q:CNT'>0 D
  1. . S NODE=$G(HMPARRAY(CNT))
  1. . Q:$E(NODE)=U ; i.e., "^No appointments"
  1. . I HMPSORT="P" S TEMP($P(NODE,U,4)_S_CNT)=NODE Q
  1. . S TEMP($P(NODE,U,2)_S_$P(NODE,U,4)_S_CNT)=NODE
  1. S CNT=0,ITR="" F S ITR=$O(TEMP(ITR)) Q:ITR="" D
  1. . S NODE=TEMP(ITR),CNT=CNT+1
  1. . S DFN=$P(NODE,U),APPT=$P(NODE,U,4)
  1. . S PATIENTS(DFN)="",PID=$$PID^HMPDJFS(DFN)
  1. . S ^TMP("HMPTEMP",$J,"data","patients",CNT,"pid")=PID
  1. . S ^TMP("HMPTEMP",$J,"data","patients",CNT,"patientType")=$S($P(NODE,U,9)="OPT":"Outpatient",1:"Inpatient")
  1. . I $G(APPT)'="" D SETAPPT(SOURCE,APPT,DFN,CNT)
  1. . ;S ^TMP("HMPTEMP",$J,"data","patients",CNT,"appointment")=$$JSONDT^HMPUTILS(APPT)
  1. D SRTSRC(HMPSORT,"C",$P($G(^SC(ID,0)),U)) ;ICR 10040 DE2818 ASF 11/12/15
  1. D ENCODE^HMPJSON($NA(^TMP("HMPTEMP",$J)),"RESULT","ERROR")
  1. ;I SERVER'="" D CHKPAT(.PATIENTS,SERVER) ; *S68-JCH*
  1. Q
  1. ;
  1. GTSOURCE(TYPE,INT) ;
  1. N REC,RESULT,SPEC,SPECTYPE,UID
  1. S SPEC=$P(TYPE," ")
  1. S SPECTYPE=$S(SPEC="Cl":"Clinic",SPEC="Wd":"Ward",SPEC="Sp":"Treating Specality",SPEC="Pr":"Provider",SPEC="Tm":"OR Team",1:SPEC)
  1. I SPECTYPE=SPEC Q SPEC_U_""
  1. I SPECTYPE="Ward" S REC=+$G(^DIC(42,INT,44)) I REC'=INT S INT=REC ;ICR 10039 DE2818 ASF 11/12/15
  1. S UID=$$SETUID^HMPUTILS($S(SPEC="Cl":"location",SPEC="Wd":"location",SPEC="Sp":"treatingSpecialty",SPEC="Pr":"provider",SPEC="Tm":"orTeam",1:SPEC),"",INT,"")
  1. S RESULT=SPECTYPE_U_UID
  1. I UID["location" S RESULT=RESULT_U_$P($G(^SC(+INT,0)),U,1,2)
  1. Q RESULT
  1. ;
  1. STGSRCE(SPEC,INT) ;
  1. N REC,RESULT,SPECTYPE,UID
  1. ;T:TeamList, W:Ward List, P:Provider List, S:Specialty List, C:Clinic List, M:Combination
  1. S RESULT=""
  1. I "TWPSC"'[SPEC Q RESULT
  1. S SPECTYPE=$S(SPEC="C":"Clinic",SPEC="W":"Ward",SPEC="S":"Treating Specality",SPEC="P":"Provider",SPEC="T":"OR Team",1:SPEC) I SPECTYPE=SPEC Q RESULT
  1. I SPECTYPE="Ward" S REC=+$G(^DIC(42,INT,44)) I REC'=INT S INT=REC ;ICR 10039 DE2818 ASF 11/12/15
  1. S UID=$$SETUID^HMPUTILS($S(SPEC="C":"location",SPEC="W":"location",SPEC="S":"treatingSpecialty",SPEC="P":"provider",SPEC="T":"orTeam",1:SPEC),"",INT,"")
  1. S RESULT=SPECTYPE_U_UID
  1. I UID["location" S RESULT=RESULT_U_$P($G(^SC(+INT,0)),U,1,2) ;ICR 10060 DE2818 ASF 11/12/15
  1. Q RESULT
  1. ;
  1. GETWLIST(RESULT,SERVER,ID) ;
  1. N CNT,DFN,ITR,NODE,PATIENTS,PID,ROOM,TEMP,WARD,ERROR,HMPARRAY,HMPSORT
  1. K ^TMP("HMPTEMP",$J)
  1. D DEFSORT^ORQPTQ11(.HMPSORT)
  1. D BYWARD^ORWPT(.HMPARRAY,ID)
  1. S CNT=0 F S CNT=$O(HMPARRAY(CNT)) Q:CNT'>0 D
  1. . S NODE=$G(HMPARRAY(CNT))
  1. . Q:$E(NODE)=U ; i.e., "^No patients found"
  1. . I HMPSORT="R" S TEMP($P(NODE,U,3)_" "_CNT)=NODE Q
  1. . S TEMP($P(NODE,U,2)_" "_CNT)=NODE
  1. S ITR="",CNT=0 F S ITR=$O(TEMP(ITR)) Q:ITR="" D
  1. .S NODE=TEMP(ITR),CNT=CNT+1
  1. .S DFN=$P(NODE,U),ROOM=$P(NODE,U,3)
  1. .S PATIENTS(DFN)="",PID=$$PID^HMPDJFS(DFN)
  1. .S ^TMP("HMPTEMP",$J,"data","patients",CNT,"pid")=PID
  1. .D STINP(DFN,CNT,ROOM)
  1. .;S ^TMP("HMPTEMP",$J,"data","patients",CNT,"roomBed")=ROOM
  1. D SRTSRC(HMPSORT,"W",$P($G(^DIC(42,ID,0)),U)) ;ICR 10039 DE2818 ASF 11/12/15
  1. D ENCODE^HMPJSON($NA(^TMP("HMPTEMP",$J)),"RESULT","ERROR")
  1. ;I SERVER'="" D CHKPAT(.PATIENTS,SERVER) ; *S68-JCH*
  1. Q
  1. SRTSRC(SORT,SRCTYPE,SRCNAME) ; Set sort type, source type, source name
  1. S ^TMP("HMPTEMP",$J,"data","defaultPatientListSourceType")=SRCTYPE
  1. S ^TMP("HMPTEMP",$J,"data","defaultPatientListSourceName")=SRCNAME
  1. S ^TMP("HMPTEMP",$J,"data","defaultPatientListSourceSort")=SORT
  1. Q