[613] | 1 | PXBGPRV ;ISL/JVS,ESW - GATHER PROVIDERS ; 12/5/02 11:35am
|
---|
| 2 | ;;1.0;PCE PATIENT CARE ENCOUNTER;**7,11,108,186**;Aug 12, 1996;Build 3
|
---|
| 3 | ;
|
---|
| 4 | PRV(VISIT,PXBSKY,PXBKY,PXBSAM,PXBCNT,PRVDR,FPRI) ;--Gather the entries in the V PROVIDER file
|
---|
| 5 | ;
|
---|
| 6 | ;Output:
|
---|
| 7 | ; PXBSKY(PXBC,IEN)=PRVI
|
---|
| 8 | ; PXBKY(NAME,PXBC)=NAME^P^TYPE^PRVI
|
---|
| 9 | ; PXBSAM(PXBC)=NAME^P^TYPE^PRVI
|
---|
| 10 | ; PRVDR("PRIMARY")=NAME^IEN^PRVI
|
---|
| 11 | ; PXBCNT
|
---|
| 12 | ; FPRI
|
---|
| 13 | ;where:
|
---|
| 14 | ; PXBC - sequence in an order of providers name
|
---|
| 15 | ; IEN - of ^AUPNVPRV(
|
---|
| 16 | ; NAME - provider's name (LAST,FIRST...)
|
---|
| 17 | ; P - PRIMARY or SECONDARY
|
---|
| 18 | ; PRVI - IEN of ^VA(200,
|
---|
| 19 | ; PXBCNT - provider count
|
---|
| 20 | ; FPRI:
|
---|
| 21 | ; 0 - Primary not selected
|
---|
| 22 | ; 1 - Primary selected
|
---|
| 23 | ;
|
---|
| 24 | N IEN,QUANTITY,PROVIDER,PRIMARY,PRV,GROUP,PXBC
|
---|
| 25 | N DIC,DR,DA,DIQ,PRVI,TYPE
|
---|
| 26 | ;
|
---|
| 27 | K ^TMP("PXBU",$J),PRV,PXBKY,VAUGHN,PXBSAM,PXBSKY,PXBCNT,PXBPRV,FPRI
|
---|
| 28 | K PRVDR
|
---|
| 29 | S FPRI=""
|
---|
| 30 | ; create an array of current providers without duplicates, with their
|
---|
| 31 | ; ^(0) node as a value
|
---|
| 32 | I $D(^AUPNVPRV("AD",VISIT)) D
|
---|
| 33 | .D GETPRV^PXAPIOE(VISIT,"^TMP(""PXBU"",$J,""PRV"")")
|
---|
| 34 | ;
|
---|
| 35 | A ;--Set array with PROVIDERS
|
---|
| 36 | ;
|
---|
| 37 | I $G(^TMP("PXBU",$J,"PRV")) D
|
---|
| 38 | .S IEN=0 F S IEN=$O(^TMP("PXBU",$J,"PRV",IEN)) Q:IEN'>0 D
|
---|
| 39 | ..S PRIMARY=$S($P(^(IEN),U,4)="P":"PRIMARY",1:"SECONDARY")
|
---|
| 40 | ..S PRVI=+^(IEN),TYPEI=$P(^(IEN),U,6)
|
---|
| 41 | ..S DIC=200,DIC1=DIC,DR=.01,DA=PRVI,DIQ="PRVN" D EN^DIQ1 D
|
---|
| 42 | ...S PRV=PRVN(DIC1,DA,DR)
|
---|
| 43 | ..S FPRI=FPRI_$E(PRIMARY,1,3) ;-Creating Flag for Primary prompt
|
---|
| 44 | ..S TYPE=$$OCCUP("","","",2,TYPEI) D
|
---|
| 45 | ...N Y,DATE
|
---|
| 46 | ...S Y=+$P($G(^AUPNVSIT(VISIT,0)),U) X ^DD("DD") S DATE=$P(Y,"@",1)
|
---|
| 47 | ...I TYPEI="" S TYPE=$$GET^XUA4A72(PRVI,+$P($P($G(^AUPNVSIT(VISIT,0)),U),"."))
|
---|
| 48 | ...I +TYPE=-2 S TYPE="*** CLASS not 'ACTIVE' on "_DATE_"***"
|
---|
| 49 | ...I +TYPE=-1 S TYPE=""
|
---|
| 50 | ...;I +TYPE>0 S TYPE="**** DELETE and RE-ENTER PROVIDER****"
|
---|
| 51 | ...I +TYPE>0 S TYPE=""
|
---|
| 52 | ..S GROUP=PRV_U_PRIMARY_U_TYPE_U_PRVI
|
---|
| 53 | ..I PRIMARY["PRI" S PRVDR("PRIMARY")=PRV_U_IEN_U_PRVI
|
---|
| 54 | ..S PRV(PRV,IEN)=GROUP
|
---|
| 55 | K ^TMP("PXBU",$J,"PRV")
|
---|
| 56 | ;
|
---|
| 57 | B ;--Add line numbers
|
---|
| 58 | ;create local arrays with data from existing providers
|
---|
| 59 | I $D(PRV) D
|
---|
| 60 | .S PXBC=0,PRV="" F S PRV=$O(PRV(PRV)) Q:PRV="" D
|
---|
| 61 | ..S IEN=0 F S IEN=$O(PRV(PRV,IEN)) Q:IEN="" S PXBC=PXBC+1 D
|
---|
| 62 | ...S PXBKY(PRV,PXBC)=$G(PRV(PRV,IEN)),PXBSAM(PXBC)=$G(PRV(PRV,IEN))
|
---|
| 63 | ...S PXBSKY(PXBC,IEN)=$P(PRV(PRV,IEN),U,4)
|
---|
| 64 | ...K PRV(PRV,IEN)
|
---|
| 65 | FINISH ;--Finish up some variables
|
---|
| 66 | S:FPRI'["PRI" FPRI=0 S:FPRI["PRI" FPRI=1
|
---|
| 67 | ;FPRI=0 Then there is no Primary Selected yet
|
---|
| 68 | EXIT ;--set a providers count
|
---|
| 69 | S PXBCNT=+$G(PXBC)
|
---|
| 70 | Q
|
---|
| 71 | ;
|
---|
| 72 | OCCUP(IEN,DATE,CODE,RETURN,CLASSIEN) ;--FORMAT PERSON CLASS TO DISPLAY
|
---|
| 73 | ; IEN = Provider pointer to file# 200
|
---|
| 74 | ; DATE = Date of occurrence of service
|
---|
| 75 | ; CODE = Person class Code (if already known)
|
---|
| 76 | ; **(Required step) If you use code leave IEN and DATE Blank
|
---|
| 77 | ; RETURN = (Required) Flag to decide what format you want the
|
---|
| 78 | ; return value.
|
---|
| 79 | ; CLASSIEN = Ien of entry in the PERSON CLASS file#8932.1 If the Ien
|
---|
| 80 | ; was saved this parameter could be sent in instead of CODE.
|
---|
| 81 | ;
|
---|
| 82 | ; 1 = IEN^OCCUPATION^SPECIALITY^SUBSPECIALITY^STATUS^DATE INACTIVATED^VA CODE
|
---|
| 83 | ; 2 = Short Description
|
---|
| 84 | ; 3 = Short Description^VA CODE
|
---|
| 85 | ; *** If only CODE and RETURN = 1 There is no value or other
|
---|
| 86 | ; value in the STATUS and DATE INACTIVATED fields.
|
---|
| 87 | ;
|
---|
| 88 | ; Output:
|
---|
| 89 | ; -1 "no comment" function call to person class couldn't find
|
---|
| 90 | ; a class for that person.
|
---|
| 91 | ; -1^COMMENT This function is called incorrectly
|
---|
| 92 | ; -2 "no comment" There is no ACTIVE person class for provider
|
---|
| 93 | ; based on the date provided.
|
---|
| 94 | ;
|
---|
| 95 | N OCC,SPE,SUB,ENTRY,DIS,OCCL,TYPE,VACODE,ANS
|
---|
| 96 | ;--VALIDATE
|
---|
| 97 | I (+$G(IEN)'>0)&($L(IEN)>0) Q -1_"^INVALID PERSON IEN"
|
---|
| 98 | I '$G(IEN),'$G(DATE),$G(CODE)="",'$G(RETURN),'$G(CLASSIEN) Q -1_"^NO PARAMETERS"
|
---|
| 99 | I '$G(IEN),'$G(DATE),$G(CODE)="",$G(RETURN),'$G(CLASSIEN) Q -1_"^NO PARAMETERS"
|
---|
| 100 | I '$G(RETURN) Q -1_"^NO RETURN PARAMETER (Required)"
|
---|
| 101 | I $G(RETURN)]"",(RETURN'<4!(RETURN'>0)) Q -1_"^RETURN MUST BE 1,2,or 3"
|
---|
| 102 | I DATE]"",+DATE'>0 Q -1_"^INVALID FILEMAN DATE"
|
---|
| 103 | I $G(IEN) Q:'$D(^VA(200,$G(IEN))) -1_"^NO SUCH IEN IN FILE# 200"
|
---|
| 104 | I $G(IEN),$G(DATE) D I $G(RETURN)=1 Q TYPE
|
---|
| 105 | .S TYPE=$$GET^XUA4A72(IEN,$P(DATE,".")),VACODE=$P(TYPE,U,7)
|
---|
| 106 | I $G(IEN),$G(DATE),+TYPE<0 Q TYPE
|
---|
| 107 | ;
|
---|
| 108 | ;---CONVERT IEN TO CODE
|
---|
| 109 | I $G(CLASSIEN) S CODE=$$IEN2CODE^XUA4A72(CLASSIEN)
|
---|
| 110 | ;
|
---|
| 111 | I $G(CODE)]"",'$G(IEN),'$G(DATE) S TYPE=$O(^USC(8932.1,"F",$G(CODE),0)),VACODE=CODE I $G(RETURN)=1 S ANS=TYPE_U_$G(^USC(8932.1,TYPE,0)) Q ANS
|
---|
| 112 | S ENTRY=$G(^USC(8932.1,+TYPE,0))
|
---|
| 113 | OCC ;---OCCUPATION
|
---|
| 114 | S OCCL=$P(ENTRY,U)
|
---|
| 115 | S OCC=$P($P(ENTRY,U)," ",1)
|
---|
| 116 | I OCCL["Physicians (M.D" S OCC="Physician"
|
---|
| 117 | I OCCL["Physician Assistant" S OCC=OCCL
|
---|
| 118 | I OCCL["Speech, Language" S OCC="Language"
|
---|
| 119 | I OCCL["Technologists" S OCC="Technical"
|
---|
| 120 | I OCCL["Eye and Vision" S OCC="Ophthalmic"
|
---|
| 121 | I OCCL["Respiratory, Rehab" S OCC="Therapist"
|
---|
| 122 | I OCCL["Podiatric" S OCC="Podiatry"
|
---|
| 123 | ;
|
---|
| 124 | SPE ;--SPECIALITY
|
---|
| 125 | S SPEL=$P(ENTRY,U,2)
|
---|
| 126 | S SPE=$P(ENTRY,U,2)
|
---|
| 127 | I SPEL["Registered Nurse" S SPE="R.N."
|
---|
| 128 | I SPEL["Dentist" S SPE="Dentist"
|
---|
| 129 | I SPEL["Clinical Services" S SPE="Clinical"
|
---|
| 130 | I SPEL["Non-R.N.s" S SPE="Non R.N."
|
---|
| 131 | I SPEL["Radiologic Sciences" S SPE="Radiology"
|
---|
| 132 | I SPEL["Clinical Path" S SPE=""
|
---|
| 133 | I SPEL["Physical Therap" S SPE="P.T."
|
---|
| 134 | I SPEL["Obstetrics and Gynecology" S SPE="Ob. & Gyn."
|
---|
| 135 | I SPEL["iatry and Neur" S SPE="Psyc & Neuro"
|
---|
| 136 | I SPEL["Clinical Specialist" S SPE="Clinical"
|
---|
| 137 | I SPEL["Registered Dietitian" S SPE="R. Dietitian"
|
---|
| 138 | I SPEL["Rehabilitation Prac" S SPE="Rehabilitation"
|
---|
| 139 | I OCC["Physician"&(SPE["Internal Medicine") S SPE="Internist"
|
---|
| 140 | ;
|
---|
| 141 | SUB ;--SUBSPECIALITY
|
---|
| 142 | S SUBL=$P(ENTRY,U,3)
|
---|
| 143 | S SUB=$P(ENTRY,U,3)
|
---|
| 144 | I SUB["Counselor"&(SPE["Counselor") S SPE=""
|
---|
| 145 | I SUB["Therapist"&(SPE["Therapist") S SPE=""
|
---|
| 146 | I SUB["Nurse"&(SPE["Nurse") S SPE=""
|
---|
| 147 | I SUB["Pediatric"&(SPE["Pediatric") S SPE=""
|
---|
| 148 | I SUB["Psychiatry"&(SPE["Psychiatry") S SPE=""
|
---|
| 149 | I SUB["Podiatri"&(SPE["Podiatri") S SPE=""
|
---|
| 150 | I SUB["Clinical and Laboratory Immunology" S SUB="Clin & Lab Immunology"
|
---|
| 151 | I SUB["Clinical & Laboratory Immunology" S SUB="Clin & Lab Immunology"
|
---|
| 152 | I SUB["cine-Envir" S SUB="Occ & Environmental"
|
---|
| 153 | I SUB["Child and Adolescent Psyc" S SUB="Pediatric Mental Health"
|
---|
| 154 | I SUB["ist in Meta" S SUB="Metabolic"
|
---|
| 155 | I SUB["ist in Pedia" S SUB="Pediatric"
|
---|
| 156 | I SUB["ist in Renal" S SUB="Renal"
|
---|
| 157 | I SUB["tion Intern" S SUB="Intern"
|
---|
| 158 | I SUB["tion Coordin" S SUB="Coordinator"
|
---|
| 159 | I SUB["tion Counselor" S SUB="Counselor"
|
---|
| 160 | I SUB["for the Blind" S SUB="Orientation for Blind"
|
---|
| 161 | I SUB["Dosimetrist" S SUB="Planning, Dosimetrist"
|
---|
| 162 | I SPEL["Respiratory Care Pr"&(SUB'="") S SPE=""
|
---|
| 163 | ;
|
---|
| 164 | ;--CALCULATE THE BEST DISPLAY
|
---|
| 165 | S DISL=OCCL_"-"_SPEL_"-"_SUBL
|
---|
| 166 | S DIS=OCC_"/"_SPE_"/"_SUB
|
---|
| 167 | I SUB[SPE S DIS=OCC_"/"_SUB
|
---|
| 168 | I SPE="" S DIS=OCC_"/"_SUB
|
---|
| 169 | I SUB="" S DIS=OCC_"/"_SPE
|
---|
| 170 | AND I $L(DIS," and ")>1 D
|
---|
| 171 | .N I F I=1:1:$L(DIS," ") I $P(DIS," ",I)="and" S $P(DIS," ",I)="&"
|
---|
| 172 | I $L(DIS," and ")>1 G AND
|
---|
| 173 | ;Q $E(DIS,1,40)_" "_$L(DIS)
|
---|
| 174 | ;Q $E(DIS,1,40)_"***"_OCCL
|
---|
| 175 | ;Q SPE_" *** "_SPEL
|
---|
| 176 | ;Q SUB_" *** "_SUBL
|
---|
| 177 | ;Q DISL_"~"_DIS
|
---|
| 178 | ;Q ""_"~"_DIS
|
---|
| 179 | I $G(RETURN)=2 Q DIS
|
---|
| 180 | I $G(RETURN)=3 Q DIS_U_VACODE
|
---|
| 181 | Q -1_"^SOMETHING BAD WRONG_SHOULDN'T BE HERE"
|
---|